new bruger du kun når du skal allokerer ny plads, medmindre at du ønsker at lave en kopi af nogle data! Ved dit eksempel type caster du dig frem til at ændre din char* pointer til at være af typen SomeStruct* derfor opstår der ikke nye data.
Hvis vi nu ser helt bort fra bufferz, kan man så ikke bruge new til at gøre det samme som man gør med Pointer = (SomeStruct *)bufferz ? Jeg ved godt at der ikke bliver allokeret hukommelse her. noget i retning af Pointer = new SomeStruct[2100] eller er det ikke det samme ?
SomeStruct *Pointer = new SomeStruct[2100]; Gør "næsten" det samme, den ene opretter bare på heapen og den anden på stacken. Derfor er du nød til hvis du har brugt new, at slette pladsen igen: delete Pointer;
Den anden slettes automatisk, når den løber ud af scope.
Opretter aldrig noget som helst (jo en pointer men det ikke pointen) og det den pointer peger på kan både ligge i heap eller på stak (afhængig af hvor bufferz er erklæret).
Og: new SomeStruct[2100] allokerer ikke 2100 bytes men 2100*sizeof(SomeStruct) bytes.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.