AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C++] Operator delete[]

Ein Thema von Tubos · begonnen am 20. Sep 2004 · letzter Beitrag vom 20. Sep 2004
Antwort Antwort
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#1

[C++] Operator delete[]

  Alt 20. Sep 2004, 10:25
Hallo;

was bringt mir in C++ der Operator delete[]?

Wenn ich folgenden Code habe:
Code:
int *i;
i=new int[10];
delete[] i;
woher soll der Operator wissen, wie groß das Array ist?
Was wird dann freigegeben?
Muss ich immer
Code:
delete[10] i;
schreiben?

Danke schonmal!

Tubos
Lukas
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#2

Re: [C++] Operator delete[]

  Alt 20. Sep 2004, 10:30
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.
Daniel M.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#3

Re: [C++] Operator delete[]

  Alt 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.
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#4

Re: [C++] Operator delete[]

  Alt 20. Sep 2004, 11:15
OregonGhost hat es eigentlich sehr perfekt beschreiben Jetzt komm ich mir doof vor wegen meiner kurzen simpelen antwort *g* die ich aber verständlicher finde als etwas so fachliches
Daniel M.
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#5

Re: [C++] Operator delete[]

  Alt 20. Sep 2004, 15:40
Zitat:
delete[] löscht ja auch nur deinen zeiger auf das erste element, alles andere sollte das windows speicher management übernehmen
Ich muss den Speicher manuell freigeben, weil ich ihn während der Programmausführung nicht mehr brauche.
Der Vorgang wird dann wieder ausgeführt

Zitat:
Um genau zu sein, legt der Operator new[] gewisse Informationen über die Größe im Speicher ab, die delete[] ausliest.
wow, hätte ich 2nicht gedacht dass das automatisch geht!

Zitat:
Rufst du nämlich delete auf einem Array aus Objekten auf, dann wird nur der Speicher freigegeben, keine Destruktoren ausgeführt.
Ja, es handelt sich um ein Array aus Objekten, aber den Destruktor brauch ich sowieso nicht.

Danke!
Lukas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz