3-Dim Array speicher probleme



  • Hallo zusammen!

    Ich habe folgendes Problem aus dem ich einfach nicht schlau werde.
    Ich habe folgende Funktion geschrieben um ein 3-dimensionales array freizugeben:

    static void freeMemoryBxy(BOOL*** bxy, int dim1, int dim2){
    	for(int m=0; m<dim1; m++)
    		for(int n=0; n<dim2; n++)
    			delete[] bxy[m][n];
    
    	for(int m=0; m<dim1; m++)
    		delete[] bxy[m];
    
    	delete[] bxy;
    	bxy=NULL;
    }
    

    Das geht auch soweit ganz gut, aber beim 10. Durchlauf meines Programms, also beim 10. Aufruf dieser Funktion kommt folgende Fehlermeldung von Windows:

    Debug Error!

    HEAP CORRUPTION DETECTED: after Normal block(#57353) at 0x0035FFFE0.
    CRT detected that the application wrote to memory after end of heap buffer.

    Dieser Fehler tritt genau an dieser Stelle auf:
    delete[] bxy;

    Hat jemand eine Idee was das bedeuten könnte? Werd aus der Fehlermeldung nicht wirklich schlau

    danke schonmal im voraus



  • Vermutlich passen die Angaben von dim1 und dim2 nicht zur tatsächlichen Größe des Arrays.

    (btw, die letzte Anweisung ist übrigens unnötig - und wirkungslos)



  • Hi!

    das bxy=NULL?

    Hab den Fehler schon gefunden. Ich bin eine gute Weile zuvor über die Arraygrenzen gerutscht. Komischerweise kam der Fehler erst beim freigeben.

    Trotzdem danke für die Hilfe



  • Sei froh dass es den debug heap gibt. Ein release build wäre vermutlich drübergelaufen und stattdessen einfach *irgendwo* abgekackt 😉



  • Gast1122 schrieb:

    Komischerweise kam der Fehler erst beim freigeben.

    Ja, vorher hat auch niemand überprüft, ob der Heap noch intakt ist 🙂



  • schau dir mal std::vector an


Anmelden zum Antworten