![]() |
[C++] Operator delete[]
Hallo;
was bringt mir in C++ der Operator delete[]? Wenn ich folgenden Code habe:
Code:
woher soll der Operator wissen, wie groß das Array ist?
int *i;
i=new int[10]; delete[] i; Was wird dann freigegeben? Muss ich immer
Code:
schreiben?
delete[10] i;
Danke schonmal! Tubos |
Re: [C++] Operator delete[]
Hi,
delete[] löscht ja auch nur deinen zeiger auf das erste element, alles andere sollte das windows speicher management übernehmen ;) aber ob es das tut ist immer fraglich. Gruss Daniel M. |
Re: [C++] Operator delete[]
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). |
Re: [C++] Operator delete[]
OregonGhost hat es eigentlich sehr perfekt beschreiben ;) Jetzt komm ich mir doof vor wegen meiner kurzen simpelen antwort :oops: *g* die ich aber verständlicher finde als etwas so fachliches :zwinker:
|
Re: [C++] Operator delete[]
Zitat:
Der Vorgang wird dann wieder ausgeführt Zitat:
Zitat:
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz