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]