C语言 重新分配包含表的结构表

c3frrgcw  于 2022-12-11  发布在  其他
关注(0)|答案(2)|浏览(113)

我正在写一个程序,将数据存储在一个表的结构。我的问题是,我不知道为什么我的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;
    
}
q43xntqr

q43xntqr1#

(*graf)[vp].node=realloc((*graf)[vp].node,(*graf)[vp].l*sizeof(int)); //it crashes here

realloc需要一个有效的初始化指针作为第一个参数(或者NULL,在这种情况下,它就像malloc被调用了一样),因为(*graf)[vp].node没有初始化,你正在传递垃圾。

eqzww0vc

eqzww0vc2#

实际上,如果你的结构体是用calloc()初始化的,或者用memset()设置为0,或者(*graf)[vp].node被设置为null,那么realloc()实际上就像malloc()一样。
如果ptr是空指针,则realloc()的行为与malloc()的行为类似。
有趣的事实:如果size设置为0并且ptr不为空,realloc()的行为就像free()一样。
来源:相对于任何realloc()手册,你可以找到尊重共同标准.

相关问题