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 0So 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?