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 debug

    gruß
    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


Anmelden zum Antworten