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 09:45 schrieb Frank Lanitz:
> Am Donnerstag 17 November 2005 09:23 schrieb Johanns Schneider:
> > Jörg Pauly wrote:
> > > Wenn Du einen Speicherbereich nullen willst, wofür auch immer, musst Du
> > > ihn erst NULLen und dann deleten.
>
> Besser andersherum....
>
> > > Grüsse aus Meissen
> > > Jörg
> >
> > alao wenn ich das jetzt richtig verstanden habe ist es so besser
> > (richtig?):
> >
> >     test *Test = new test();
> >     Test = NULL;
> >     delete Test;
>
> Du versuchst etwa zu löschen, auf das ein NULL-Zeiger weist. Da sich Dein
> Objekt wahrscheinlich nicht auf 0x0 befindet, na ich weiss nicht....
>
> Sollte das eigentlich nicht mit einem Segfault beantwortet werden? *dumm in
> die Runde frag*

Stimmt, Du hast Recht, man will ja üblicherweise nicht den Zeiger, sondern 
dessen Speicher löschen:

	test *Test = new test;
	*Test = NULL;	// Das nullt den Speicher des Objektes
	delete Test;

Was man auf keinen Fall tun sollte, ist auf ein deletetes Objekt zuzugreifen. 
Der Kernel kann Millisekunden nach dem delete-Aufruf den Speicher neu 
zugeteilt haben, und dann gibt's unter Garantie einen SegFault.

Auf einen auf NULL gesetzten Zeiger zuzugreifen ist auch "bah", endet auch mit 
einem SegFault, aber wohl nur bei Schreibzugriff.
Sorry, mein Fehler... :-(

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.