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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.