ubuntuusers.de

C++ Pointer, new() und delete()

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

sxfreak

Avatar von sxfreak

Anmeldungsdatum:
27. Juni 2006

Beiträge: 436

Hi

Folgendes Beispiel (Es geht mir um die Reservierung im Heap)

int *a = new int[2];
int *b = new int[3];

delete a;
a = b;
delete a;

Geht das, Heap über Adresse freigeben, oder steckt da mehr dahinter?

Und wenn ich

int *a = new int[2];
int *b = new int[3];


a[1] = b[1];


schreibe dann wird doch das zweite Element von b in das zweite Element von a kopiert oder ?

Schon mal danke für die Hilfe

sx

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

sxfreak hat geschrieben:

Hi

Folgendes Beispiel (Es geht mir um die Reservierung im Heap)

int *a = new int[2];
int *b = new int[3];

delete a;
a = b;
delete a;

Geht das, Heap über Adresse freigeben, oder steckt da mehr dahinter?

Ja das geht so. Dennoch hast Du einen groben Fehler im Code: Wenn Du Speicher mit new int[x] allokierst, dann musst Du ihn auch mit delete[] freigeben, und nicht mit delete. Also delete[] a! delete verwendet man nur für einzelne Objekte, die man auf dem Heap allokiert.
sxfreak hat geschrieben:

Und wenn ich

int *a = new int[2];
int *b = new int[3];


a[1] = b[1];


schreibe dann wird doch das zweite Element von b in das zweite Element von a kopiert oder ?

Ja.

Antworten |