speicherplatzfreigabe problem
-
hallo,
ich hab die datenstruktur list<bool**> *solutions als objektattribut. innerhalb einer funktion werden der liste die unten aufgeführte elemente mit push_back(...) hinzugefügt:
newpart = new bool*[maxpartitions]; for(int j = 0;j<maxpartitions;j++){ newpart[j] = new bool[length]; for(int k = 0;k<length;k++){ newpart[j][k] = 0; } }im destruktor versuch ich den speicherplatz mit
while(!solutions->empty()){ delete[] solutions->front(); }wieder freizugeben, worauf ich folgende fehlernachricht bekomme:
MaxPart(1084) malloc: *** error for object 0x3005f0: double free
MaxPart(1084) malloc: *** set a breakpoint in szone_error to debuggruß
ilow
-
natürlich steht innerhalb der while schleife noch ein pop_front()
-
In der while-Schleife sollte stehen:
bool** ppb = solutions->front(); // erstes Element kopieren solutions->pop_front(); // ... dann aus der Liste entfernen // ... dann freigeben (und zwar vollständig): for (int i = 0; i < maxpartitions; ++i) delete[] ppb[i]; delete[] ppb;Gruß Frdln