【发布时间】:2015-04-03 17:14:46
【问题描述】:
我在释放 3d 数组时收到“双重释放或损坏”错误。谁能告诉我代码中的问题在哪里? 数组的大小为 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” 中止(核心转储)。
【问题讨论】:
-
有什么问题?
-
N的值是多少?
标签: c arrays malloc free corruption