Adresse eines Pointers als Membervariable



  • Hi,

    folgendes Szenario:

    my Class.h:
    ...
    myPointer *mySecondClass;
    ...

    myClass.cpp:
    ....
    myPointer = new mySecondClass;
    mySecondClass **myPointerRef;
    myPointerRef = &myPointer;
    ...
    delete myPointer;
    myPointer = new mySecondClass;
    *myPointerRef->doSomething(); // dereferenzierung immer möglich?

    oder muss nach delete wieder die Adresse des Pointers neu zugewiesen werden:

    delete myPointer;
    myPointer = new mySecondClass;
    myPointerRef = &myPointer; // ist das notwendig?
    *myPointerRef->doSomething();



  • @mdqm sagte in Adresse eines Pointers als Membervariable:

    myPointerRef = &myPointer; // ist das notwendig?

    Könnte sich die Adresse von myPointer durch das delete ändern? Wie?



  • @manni66
    Das soll wahrscheinlich heißen sie bleibt immer konstant?

    habe da keine definitive Aussage in der Spezifikation von delete gefunden.
    z.B. ob das Betriebssystem die Adresse des Pointers neu zuweisen darf.
    Selbst wenn es das in 90% der Fälle nicht macht.



  • Das Betriebssystem weiß nichts über deinen Pointer und seine Adresse. Das verwaltet höchstens den Speicherbereich, auf den der Pointer zeigt.



  • @mdqm

    habe da keine definitive Aussage in der Spezifikation von delete gefunden.

    Da steht, was delete macht. Was von dem könnte dazu führen, dass eine an delete übergebene Variable ihre Adresse ändert?



  • @mdqm sagte in Adresse eines Pointers als Membervariable:

    habe da keine definitive Aussage in der Spezifikation von delete gefunden.

    Wahrscheinlich hast du noch nichtmal die "Spezifikation von delete" gefunden.

    z.B. ob das Betriebssystem die Adresse des Pointers neu zuweisen darf.
    Selbst wenn es das in 90% der Fälle nicht macht.

    Betriebssystem? Wir reden hier über C++, right? new/delete ist Sache der Standard-Library.


Log in to reply