我正在写一个程序,将数据存储在一个表的结构。我的问题是,我不知道为什么我的realloc不工作。
我试图重新分配一个结构表中的表(听起来很混乱,我知道),但它不会工作。下面是我的程序中我遇到问题的部分:
typedef struct {
int *node;
int l;
}przejscie_t;
void czytaj(przejscie_t **graf, int vp, int vk){
*graf=realloc(*graf,(vp+1)*sizeof(przejscie_t));
(*graf)[vp].l=1;
(*graf)[vp].node=realloc((*graf)[vp].node,(*graf)[vp].l*sizeof(int)); //it crashes here
(*graf)[vp].node[(*graf)[vp].l]=vk;
}
2条答案
按热度按时间q43xntqr1#
realloc
需要一个有效的初始化指针作为第一个参数(或者NULL
,在这种情况下,它就像malloc
被调用了一样),因为(*graf)[vp].node
没有初始化,你正在传递垃圾。eqzww0vc2#
实际上,如果你的结构体是用
calloc()
初始化的,或者用memset()
设置为0
,或者(*graf)[vp].node
被设置为null
,那么realloc()
实际上就像malloc()
一样。如果ptr是空指针,则
realloc()
的行为与malloc()
的行为类似。有趣的事实:如果size设置为0并且ptr不为空,
realloc()
的行为就像free()
一样。来源:相对于任何
realloc()
手册,你可以找到尊重共同标准.