【问题标题】:Why my 2d array of int segfault with malloc?为什么我的二维 int segfault 数组带有 malloc?
【发布时间】:2018-09-02 08:54:01
【问题描述】:

此代码没有段错误 我试图“调试”它,所以我知道它什么时候出现段错误,但不明白为什么

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++;
}

感谢您的帮助;)

【问题讨论】:

  • z 在哪里/如何声明?它是如何初始化/分配的?注意:range不是二维数组,而是指向int的指针。

标签: c arrays segmentation-fault int malloc


【解决方案1】:

如果您的数组具有大小,例如,A 和 B,则在您的第一个代码片段中,变量 z 以 1 为增量工作,而在第二个代码片段中,它以 A 的增量工作并获取每个元素的第 0 个元素。

但是由于z 应该计算总元素,它当然会溢出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-09
    • 2011-10-30
    • 2019-01-26
    • 2016-05-02
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多