小编use*_*920的帖子

使用C中的大型数组上的realloc进行分段错误

我正在尝试实现一个动态数组 - 如果数组已满并且您添加了另一个点,它将使数组的大小加倍.数组的大小用len表示,数组中剩下的空格用reserved表示.如果我追加5650点它可以正常工作,但是一旦我达到5700或更高,就会给我一个分段错误.关于可能导致这种情况的任何想法?

int point_array_append( point_array_t* pa, point_t* p )
{
    if(pa->reserved==0)
    {
        if(!(realloc(pa->points, sizeof(point_t)*(pa->len * 2))))
            return 1;
        pa->reserved=pa->len;
    }
    pa->len++;
    pa->reserved--;
    pa->points[(pa->len)-1] = *p;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ arrays realloc

1
推荐指数
1
解决办法
259
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

realloc ×1