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ärefor (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.