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