Re: frage zu objecten in c++
Jörg Pauly <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Am Donnerstag, 17. November 2005 02:33 schrieb Andre Rudlaff:
> test *Test = new test();
> delete Test;
> cout << "noch ist es nicht zu ende\n";
> Test->say("fehler\n");
Krawumm, das Objekt und sein Speicher existieren nicht mehr.
> wird zwar so auch funktionieren, ist allerdings sehr gefährlich. Denn der
> Speicher ist ja nicht mehr reserviert.
> Es funktioniert hier nur, weil noch
> keine andere Variable sich diesen Speicherbereich geschnappt hat (und
> delete die instanzen ja nicht auf 0 setzt)
Der Speicher kann auch von einem anderen x-beliebigen Prozess belegt worden
sein. Der übliche Weg ist eigentlich, ein Objekt erst dann zu terminieren,
wenn man es definitiv nicht mehr benötigt.
> daher sieht man ja häufig sowas:
>
> delete Test;
> Test = NULL;
>
> um ungewollten zugriff auf das Objekt sofort feststellen zu können.
Das sollte eigentlich sofort knallen, Du schreibst schließlich auf eine
Adresse, die Dir nicht mehr gehört.
Wenn Du einen Speicherbereich nullen willst, wofür auch immer, musst Du ihn
erst NULLen und dann deleten.
Grüsse aus Meissen
Jörg
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]