Objekte vom Heap löschen



  • Hallo,
    ich habe folgendes Problem.

    Also wenn ich innerhalb einer forschleife immer neuen heap anlege und mir die pointer
    in einer datenstruktur speichere - kann ich dann am ende allen heap storage nur über die
    pointer frei machen?
    Einfach mal pseudocode der mein grosses problem herunterbricht und es deutlich macht:

    double* a;
    double* b;
    double* c;
    
    //hier in diesem array z.B  (bei mir ist es eine hash_map)
    //speichere ich pointer auf arrays die ich pro iteration in der map/array
    //speichere
    //nehmen wir einfach mal an dass in dem array pro element einfach mal
    // z.B 3 Pointer auf arrays gespeichert werden
    <type> array;
    
    for(int i = 0; i < size; i++)
    {
        a = new double[...];
        b = new double[...];
        c = new double[...];
    
        insert_Array(arr, a, b, c);
    }
    
    //wie soll ich alle auf dem heap angelegten objekte 
    //nun löschen? Kann ich das irgendwie so machen dass
    //ich über das array laufe und mir jeweils die pointer 
    //rausnehme und dann so irgendwie lösche?
    
    //so bringts ja nix:
    delete [] a;
    delete [] b;
    delete [] c;
    //so lösch ich ja nur die letzten bereiche oder?
    

    wie soll ich vorgehen?



  • du gehst halt einfach alle elemente von "array" durch, da sollten dann ja die pointer drinne stehen.
    also wenn "array" ein vector wäre

    for (vector<type>::const_itarator it=array.begin(); it != array.end(); ++it)
        delete *it;
    

    so oder ähnlich löscht du dann die speicherbereiche



  • muss natürlich iterator heissen.
    ansonsten überlege ob sich evtl. smartpointer für dich lohnen würden.


Log in to reply