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

< Previous Next >
Re: frage zu objecten in c++
  • From: adsci <adsci@xxxxxxx>
  • Date: Fri, 18 Nov 2005 14:42:00 +0100
  • Message-id: <437DDA28.4070301@xxxxxxx>
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.

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.

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


Jörg Pauly wrote:
Am Donnerstag, 17. November 2005 11:29 begab es sich, daß Alexander Muthler folgendes in den Rechenknecht kloppte:

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

Um das zu machen müsstest Du den =operator überladen, da Du auf ein
dereferenziertes Objekt zugreifst.
Warum willst Du den Speicher 'nullen', das bringt doch nichts. Wenn Du ein
delete aufgerufen hast, ist der Bereich doch wieder freigegeben (nicht
ge'nullt') und der Prozess kann ihn wieder neu allokieren.


Zugegeben, das ganze ist ziemlich hypothetisch; wenn ich ein Objekt deleted habe, interessiert es mich sowieso nicht mehr. Einzig sinnvoll ist in unübersichtlichen Codestücken den Zeiger zu nullen, damit man ihn testen kann. Aber auch das spar ich mir meistens.

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


< Previous Next >