use*_*920 1 c c++ arrays 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)