【发布时间】:2015-01-21 13:08:10
【问题描述】:
我正在尝试实现一个动态数组 - 如果数组已满并且您添加另一个点,它将使数组的大小加倍。数组的大小用 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;
}
【问题讨论】:
-
sizeof(point_t)等于什么?