c - 为什么我的二维数组带有 malloc int segfault?

标签 c arrays segmentation-fault int malloc

这段代码没有段错误 我尝试“调试”它,这样我就知道它何时出现段错误,但不明白为什么

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/

相关文章:

php - 通过 PHP 启动 C 程序时出现段错误

c++ - 尝试运行已编译的 C++ 代码时出现段错误 11

c - 使用类函数宏检查变量是否已定义

c - 如何在 Linux 内核模块中立即取消工作队列的工作项?

C语言 : how to interpret this #define?

python - 线性插值。如何在 C 中实现此算法? (给出Python版本)

java - 使用数组而不是 Java 中的 ArrayList 从用户输入创建一个新对象

java - 双端队列

c - 生成所有长度为n且设置k位的二进制字符串。(需要写在C上)

用于负数组索引的 C++ size_t 和 ptrdiff_t