Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
Delphi 3 Professional
|
Re: [C++] Operator delete[]
20. Sep 2004, 10:52
Um genau zu sein, legt der Operator new[] gewisse Informationen über die Größe im Speicher ab, die delete[] ausliest. Deshalb ist (laut Standard) new/delete auch inkompatibel zu malloc/free, selbst wenn einige Compilerhersteller hier anders vorgehen.
Wenn du willst, kannst du bei delete[] die größe mit hineinschreiben, das ist aber unnötig. Darüberhinaus ist der wesentliche Unterschied zwischen delete und delete[] die Frage, ob Destruktoren für die Array-Elemente ausgeführt werden oder nicht. Rufst du nämlich delete auf einem Array aus Objekten auf, dann wird nur der Speicher freigegeben, keine Destruktoren ausgeführt. Es wird der Zeiger auf das Array also behandelt wie ein Zeiger auf ein einzelnes Objekt (von der Größe des gesamten Arrays, allerdings).
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
|