如果我有一个按如下方式分配的二维数组:
int** map;
map = malloc(number * sizeof(int*));
if(!(map)){
printf("out of memory!\n");
return 1;
}
for (int i = 0; i < number; i++){
map[i] = malloc(number * sizeof(int));
if (!(map[i])){
printf("Not enough memory!\n");
return 1;
}
}
如果分配失败并进入if语句,我应该释放map和迄今为止分配的“columns”吗?如果是这样,我该如何操作?
目前我只是打印消息并返回1,但我不确定这是否是正确的方法。
int (*map)[number] = malloc(sizeof (int[number][number]));
或等效的方法。区别在于,即一个二维数组的数据是在相邻的内存单元中分配的,这一点非常重要。 - Lundin