breakpoint trap in free funktion [gelöst. Bitte löschen]



  • Edit:

    Ohh Entschuldigung. Ich hab den Fehler schon entdeckt beim durchlesen des Beitrags. Kann jemand den Thread wieder löschen? 😃
    War wohl etwas voreilig von mir.

    Hallo Forum.
    Ich bekomme einen Error den ich nicht ganz verstehe und der auch nur manchmal auftritt.

    Ich alloziere Speicher mit dieser Funktion:

    typedef struct{
        uint depth, size;
        uint*** data;
    } plane;
    
    plane* PlnCreate(uint depth){
        plane* pln = malloc(sizeof(plane));
    
        pln->depth = depth;
        pln->size  = 1 << depth;
    
        pln->data = malloc(depth*sizeof(uint*));
    
        for(uint l = 0; l <= depth; l++){
            pln->data[l] = malloc((1 << l)*sizeof(uint*));
            for(uint x = 0; x < (1 << l); x++)
                pln->data[l][x] = calloc((1 << l), sizeof(uint));
        }
    
        return pln;
    }
    

    Wenn ich nun am Ende des Programms den Speicher freigeben will besteht die Chance, das dieser Error kommt:
    Program received signal SIGTRAP, Trace/breakpoint trap.
    In ntdll!RtlpNtEnumerateSubKey () (C:\Windows\system32\ntdll.dll)
    Debugger finished with status 0

    So sieht die free-Funktion aus:

    void PlnFree(plane* pln){
        for(uint l = 0; l <= pln->depth; l++){
            for(uint x = 0; x < (1 << l); x++)
                free(pln->data[l][x]);
            free(pln->data[l]);
        }
        free(pln->data);
    }
    

    Ich habe schon rausgefunden, dass der Error von free(pln->data[l][x]); ausgelöst wird, aber ich habe keine Ahnung wieso.

    Wünsche allen einen schönen Tag.



  • Wo lag der Fehler?


Anmelden zum Antworten