Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中分配2d堆数组导致一致Seg错误_C_Multidimensional Array_Segmentation Fault - Fatal编程技术网

在C中分配2d堆数组导致一致Seg错误

在C中分配2d堆数组导致一致Seg错误,c,multidimensional-array,segmentation-fault,C,Multidimensional Array,Segmentation Fault,我正在创建一个这样的二维数组 int** B = calloc(16, sizeof(int*)); for(int i = 0; i <= 16; i++){ B[i] = calloc(16, sizeof(int)); } 我有一个分割错误 我尝试了很多东西,但都没有成功 编辑:解决了 结果是我使用&B将数组B传递给函数,而不是仅使用导致问题的B,尽管我在修复此错误之前实现了下面建议的更改,因此可能会遇到下一个越界问题。在for循环中,你的条件是ii分配数组的指针列表不是2D

我正在创建一个这样的二维数组

int** B = calloc(16, sizeof(int*));

for(int i = 0; i <= 16; i++){

B[i] = calloc(16, sizeof(int));

}
我有一个分割错误

我尝试了很多东西,但都没有成功

编辑:解决了


结果是我使用&B将数组B传递给函数,而不是仅使用导致问题的B,尽管我在修复此错误之前实现了下面建议的更改,因此可能会遇到下一个越界问题。

在for循环中,你的条件是
i
i分配数组的指针列表不是2D数组。@ggorlen对我来说:[16]也是OOB。你能告诉我你在编写哪个C(标志,版本…)吗?我不感谢你的帮助,但我还是很困惑。当分配B[1][0]时,我是如何越界的?这些不应该是我初始化的第一个数组或cally您在
B[I]=calloc(16,sizeof(int))上的越界其中
i==16
。见我在上面评论中的解释。数组是0索引的。当
B[1][0]=1时,碰撞可能立即发生B[1][0] = 1;