Mailinglist Archive: opensuse-programming-de (128 mails)

< Previous Next >
Re: frage zu objecten in c++
  • From: adsci <adsci@xxxxxxx>
  • Date: Fri, 18 Nov 2005 15:26:10 +0100
  • Message-id: <437DE482.4050304@xxxxxxx>
oh, du hast natürlich recht :-)
hab dezent das * übersehen!

gruß
marcel

Jörg Pauly wrote:
Am Freitag, 18. November 2005 14:42 begab es sich, daß adsci folgendes in den Rechenknecht kloppte:

da habt ihr wohl verständnisschwierigkeiten.

>>>> *Test = NULL; // Das nullt den Speicher des Objektes

nullt ja nicht den speicher des objektes, sondern den zeiger. und das
war offensichtlich auch gemeint. der kommentar ist da nur falsch
formuliert.


Einspruch. Test ist also ein Pointer auf ein Objekt. Dann ergibt Test = NULL;, daß der Pointer auf Null gesetzt wird.
Rufe ich aber *Test = NULL auf, dann geht es direkt auf's Objekt.
Dafür müsste, wie Alexander völlig richtig sagte, der =-Operator überladen sein, ansonsten weist der Compiler das sowieso zurück.


man nullt den zeiger nach jedem delete, um daran indirekt sehen zu
können, ob der zeiger auf noch referenzierten speicher zeigt.
wird von vielen als debug-hilfe benutzt.
ausserdem ist ein delete auf ein null-zeiger im gegensatz auf eine
andere adresse mit bereits freigegeben speicher okay.

trotzdem ist das problem auch damit nicht wirklich gelöst.


Das Problem tritt IMHO eh nur in der Theorie auf. Auf freigegebenen Speicher zuzugreifen führt über kurz oder lang zum SegFault, da braucht im System nur der Speicher mal knapp werden.


nullen des speicherbereichs ist natürlich in den absolut meisten fällen
quatsch.


Eigentlich immer, da kann man das System einfach seine Arbeit tun lassen.

---
Grüsse aus Meissen
Jörg Pauly


< Previous Next >