我在动态创建“多维数组”时遇到问题。我已经阅读了 comp.lang.c FAQ 上的 6.14,并且正在遵循那里列出的代码。
cache_array = malloc(cm_blks * sizeof(int *));
if (cache_array = NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
for (i = 0; i < cm_blks; i++) {
cache_array[i] = malloc(6 * sizeof(int));
if (cache_array[i] == NULL) {
fprintf(stderr, "out of memory\n");
exit(1);
}
}
变量 cm_blks 是一个整数,在我的测试用例中等于 8。cache_array 初始化为:
int **cache_array;
代码编译得很好,但是当我运行输出时,我在第二个 malloc 行出现了分段错误。