martin b:
Zeiger können natürlich *veralten*, deshalb empfiehlt sich ein
gesunde Gründlichkeit mit dem „if §“, s.o…
-> Das würde mir warscheinlich den Kopf kosten weil ein „if(
ptr )“ entspricht einem ist die Adresse gleich 0x00000000
Quark mit Soosse. Wenn du „if( ptr )“ schreibst, fragst Du ab,
ob der true ist, also ungleich NULL (oder Zahl
0, was macht’s). Im Falle der ungültig ist, wird das if nicht
ausgeführt.
Da hast du natürlich recht, dass das eine Abfrage auf ptr==true ist. Ich habe da wohl etwas schnell geschrieben.
Hier meine ofizielle Verbesserung:
[…]ein „if( ptr )“ entspricht einem „ist die Adresse gleich ungleich 0x00000000“
Im übrigen mache ich das auch schon aber anscheinend hast du mein Problem nicht genau verstanden:
Ich habe einen Pointer der != NULL ist auf den aber schon ein delete durchgeführt, jedoch nicht auf NULL gesetzt wurde.
Meine Frage war wie ich diesen Fall erkennen kann.
Da hilft mir aber ein if(ptr) leider nicht weiter…
das ist nur dann der Fall wenn ich den Pointer vorher auf NULL
gesetzt habe. Wenn ich allerdings ein delete auf den Pointer
mache dann ist die Adresse noch lange nicht NULL sondern immer
noch gültig
Quark mit Soosse. Du schreibst ja selbst ganz richtig, dass
gelöschte Zeiger zu vergessen sind. Auch hier ist es eine
Frage der gesunden Gründlichkeit, den immer auch auf NULL zu
setzen.
Danke für dein „Quark mit Sosse“ das bringt mich leider auch nicht weiter…
Was ich dazu jetzt noch schreiben soll weiß ich auch nicht… Am besten ich wiederhole mich für dich nochmal…
nach einem „delete ptr“ enthällt ptr immernoch eine Adresse.
Jemand hatte nicht die besagte Gründlichkeit danach ein „ptr = NULL“ zu schreiben.
So und ich hab damit zu kämpfen, dass ein Pointer der eigentlich NULL hätte sein sollen durch das ganze Progtramm geschleift wird und abstürze auslößt.
Der Code ist unübersichtlich, pro Methode gibt es weit mehr als 1 return und es werden viele Compiler-Makros verwendet…
Also eine unschöne Arbeit…
Laut deiner ViKa bist Du ja ohnedies Fachinfomatiker, da wirst du :das fraglos auch ohne mir schaffen. Was Dein Deutsch betrifft ungültige Ausdrücke auch hier…), bin ich mir da nicht so sicher, :aber es gibt ja dafür weiter unten noch ein Brett. Dann brauchst Du :noch ein Brett für guten Benimm: Leute, die hier das nötigst drauf :haben, bedanken sich wenigstens einmal dafür, dass andere Teilnehmer :sich Mühe machen.
Im übrigen sollte ich mich noch dafür bedanken, dass du dir die Mühe gemacht hast etwas zu schreiben… Auch wenn ich eigentlich darauf verzichten hätte könenn weil weiter geholfen hast mir das nicht wirklich. Im Gegenteil ich fühle mich auch noch beleidigt von dir…
Aber da du dich offensichtlich auch von mir beleidigt fühlst würde ich mich also freuen, wenn du in Zukunft vermeiden könntest mir zu schreiben
Wer auf die Frage wie kann ich erkennen ob die Adresse in einem Pointer ein gültiges Objekt zeigt mit „frag den Pointer auf NULL ab und setzte gleich nach dem Delete die Pointervariable auf NULL“ antwortet hat mich nicht ganz richtig verstanden…
Vielen Dank
Stef