Lebensdauer eines Objekts



  • Hi,

    ich habe noch ein Verständnisproblem mit Objekten.
    Wie genau muß ich diese anlegen, damit der Speicher nicht wieder freigegeben wird, sondern auch weiterhin verfügbar bleibt, selbst wenn die Funktion, innerhalb dieser das Objekt erstellt wurde wieder verlassen wird?
    Ich möchte gerne in einer Funktion ein Objekt erstellen, dass dann als Nachfolgeobjekt des Objekts aus dem vorherigen Funktionsaufruf angehängt wird (über Rekursion). Sprich, über den Objektnamen soll es nicht mehr ansprechbar sein, aber über die Adresse, die in einem Pointerfeld der Objekt-Struktur abgelegt ist.



  • ist die frage ernstgemeint? 😕

    lebensdauer von objekten sind einfach. alles was in einer geschweiften klammer init. wird, ist nach der geschweiften klammer zu wieder weg. punkt baste

    du musst das objekt halt in der geschweiften klammer davor init.

    void fkt1(int &a)
    {
    int b = 5;  // hier init
    
    int c = 20;
    
    b = b+c;
    a = a+c;
    
    // hier gibts gleich b nichtmehr :)
    }
    int main()
    {
    
    int a = 300;
    
    // cout ..
    
    fkt1(a);
    
    // cout
    
    }
    

    fragen?



  • Bei Objekten verhaelt es sich mit der Lebensdauer wie mit Variablen, wenn du es
    folgendermaßen deklarierst:

    objektname variablenname;
    

    Legst du es selbst per Pointer an, bleibt es da bis du es loeschst:

    objektname *poObjekt;
    poObjekt = new objektname; // neues Obj. anlegen
    if(poObjekt)
    .
    . // Jetzt ist das Objekt immer ueber den Pointer da
    .
    delete poObjekt; // Obj. loeschen
    poObjekt = Null;
    


  • newkid_ schrieb:

    lebensdauer von objekten sind einfach. alles was in einer geschweiften klammer init. wird, ist nach der geschweiften klammer zu wieder weg. punkt baste

    wie schon erwähnt bei selbst allokierten speicher (new, malloc, ...) stimmt das nicht. auch ausserhalb der geschweiften klammern.

    http://tutorial.schornboeck.net/scope.htm
    http://tutorial.schornboeck.net/dyn_speicher.htm



  • danke für die links 🙄

    ich hab die fragestellung nur überflogen ( ich gebs zu 😞 )

    bin nicht von mit new ( pointern ) erstellten objekten ausgegaben ( wie in meinem bsp zu sehen )

    next time, les ich gründlicher 🕶


Anmelden zum Antworten