Invalid Pointer



  • Hi,

    hab folgendes problem...

    ...die kurzfassung: ich hab einen pointer auf den ich zugreife, der bewusst ab und an noch nicht angelegt wurde, bzw. nichts zugewiesen wurde, und greife darauf zu => CRASH !!
    mein pointer ist kein nullpointer, danach kann ich nicht abfragen, jetzt wollte ich wissen ob es eine möglichkeit gibt zu fragen ob der pointer gültig ist oder nicht.

    falls ihr das nicht verstehen solltet kann ich noch eine langfassung schreiben 😉



  • so wie ich das sehen macht es sinn, klassenargumente die pointer sind im constructor mit NULL zu belegen und im destructor nach delete nochmal ein NULL zu drücken, oder irre ich, weil dann kann sowas eigentlich nicht mehr passieren!



  • Flipstar25 schrieb:

    so wie ich das sehen macht es sinn, klassenargumente die pointer sind im constructor mit NULL zu belegen und im destructor nach delete nochmal ein NULL zu drücken, oder irre ich, weil dann kann sowas eigentlich nicht mehr passieren!

    1. Dein Problem tönt eher nach C++ als nach C++/CLI
    2. Du hast richtig erkannt, dass Pointer im Konstruktor zu initialisieren sind. Entweder mit 0 oder mit einem andern gültigen Wert (z.B. mit dem Pointer der bei new zurückgegeben wird).
    3. delete muss Du nicht Prinzipiell aufrufen, sondern nur wenn Du ein Objekt mit new angefordert hast.
    4. Im Destruktor den Pointer wieder auf 0 zu setzen ist nicht nötig, denn nach dem Destruktor existiert dein Objekt nicht mehr!

    Edit:
    Vor dem delete auf 0 zu prüfen ist auch unnötig, da delete das schon selbst tut. Nur als Hinweis gedacht.



  • ja stimmt das mit delete automatisch auf NULL hab ich schon gelesen, aber wenn ich in einer funktion ein objekt mit delete lösche sollte ich es doch danach auf null setzen, da delete das genau eben nicht macht, wenn ich mich nicht täusche



  • Ja, das ist korrekt.
    Den Pointer nach dem delete auf 0 zu setzen ist richtig.
    Einfach im Destruktor ist es nicht nötig.



  • alles klar, hab soweit verstanden. Vielen Dank theta, warst echt ne hilfe


Anmelden zum Antworten