double frei oder Korruption 3D-Array in C

Ich erhalte die Fehlermeldung "Double Free oder Corruption", während ein 3D-Array freigegeben wird. Kann mir bitte jemand sagen, wo das Problem im Code liegt? Die Größe des Arrays beträgt 2 * N * N. Der Wert von N ist hier 100. Auch ohne Casting das gleiche Ergebnis. Hier ist der Code:

// Mallocing 
double ***h = malloc(2 * (sizeof(double**)));
for(i = 0; i < N; i++) {
    h[i] = malloc(N * sizeof(double*));
    for(j = 0; j < N; j++) {
        h[i][j] = malloc(N * sizeof(double));
    }
}

// Freeing
for(i = 0; i < N; i++) {
    for(j = 0; j < N; j++) {
        free(h[i][j]);
    }
    free(h[i]);
}
free(h);

Das Programm funktioniert einwandfrei, aber am Ende erhalte ich die Fehlermeldung "double free or corruption (! Prev): 0x08cd24f8" Abgebrochen (Core Dumped).

Antworten auf die Frage(10)

Ihre Antwort auf die Frage