Speicherfreigabe
-
Hallo,
folgender Code
char *buffer = new char[len+1]; ... char *buf = buffer; ... char b = buffer[i]; ... delete[] buffer;
Muss ich da buf und b auch wieder mit delete löschen ?
Und wenn ja wie muss das aussehen?
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
ela schrieb:
Muss ich da buf und b auch wieder mit delete löschen ?
Jedes new hat (s)ein delete und jedes new[] hat (s)ein delete[].
-
ela schrieb:
Muss ich da buf und b auch wieder mit delete löschen ?
Nein. Du hast zwar zwei Referenzen (buffer und buf) auf den selben Speicherbereich, aber eben nur einen Speicherbereich, den du mit new angefordert hast. Demzufolge musst du auch nur diesen einen freigeben, was du über eine der der beiden Referenzen tun kannst.
-
Nicht nur das! Wenn du versuchst beide zu loeschen, wird es knallen!