Двойной свободный или коррупционный 3D-массив в C
Я получаю ошибку «двойное освобождение или повреждение» при освобождении трехмерного массива. Может кто-нибудь сказать, пожалуйста, где проблема в коде?Размер массива составляет 2 * N * N. Значение N здесь составляет 100. Даже без приведения, тот же результат. Вот код:
// 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);
Программа работает нормально, но в конце я получаю сообщение об ошибке «двойное освобождение или повреждение (! Prev): 0x08cd24f8» Aborted (ядро сброшено).