这段代码没有段错误 我尝试“调试”它,这样我就知道它何时出现段错误,但不明白为什么
range(int **range, int min, int max) //prototype
*range = (int *)malloc(sizeof(int) * (max - min));
if (*range == NULL)
return (0);
while (min < max)
{
range[0][z] = min; //Doesn't segfault
printf("%d\n",range[0][z]);
min++;
z++;
}
这个可以
range(int **range, int min, int max)//prototype
*range = (int *)malloc(sizeof(int) * (max - min));
if (*range == NULL)
return (0);
while (min < max)
{
*range[z] = min;//Segfault Here
printf("%d\n",range[0][z]);
min++;
z++;
}
感谢您的帮助;)
最佳答案
如果您的数组具有大小,例如 A 和 B,则在第一个代码片段中,变量 z
会增加 1,而在第二个代码片段中,它会增加 A 并获得每个元素的第 0 个元素。
但是由于 z
应该计算总元素数,所以它当然会溢出。
关于c - 为什么我的二维数组带有 malloc int segfault?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52135395/