我正在创建这样的2D数组
int** B = calloc(16, sizeof(int*));
for(int i = 0; i <= 16; i++){
B[i] = calloc(16, sizeof(int));
}
然后,我将B传递给需要参数int **的函数。然后,此函数调用另一个需要int **的函数,因此B再次被传递。
我能够做到这一点B[1][1]++;
但是当我尝试
时B[1][0] = 1;
我遇到了细分错误。
我尝试了很多事情,没有任何事情消失了。
编辑:已解决!
最后是我使用&B而不是仅将B传递给函数B导致问题的方法,尽管我在解决此错误之前实现了下面建议的更改,所以可能我接下来会遇到此问题。
在for循环中,您的条件为i <= 16
,并且仅分配了16 * int *的大小。因此,您超出了分配空间的范围。