realloc():C中的指针无效

时间:2017-03-08 06:45:30

标签: c pointers realloc double-pointer

Net是一个包含

的结构
typedef struct net{
    int numele;
    struct net **e;
} net;

以下代码引发错误:

  

realloc():指针无效

无论何时访问realloc都会导致问题并产生上述错误。我不明白为什么。如果您认为代码的这一部分没有问题,请告诉我,因为整个代码是800行,所以我认为我不能在这里发布。

void add(net *n, net *ne) {
    if(n->numele==0) {
        n->e = (net **)malloc(sizeof(net *));
        n->e[0] = ne;
        n->numele = 1;
    } else {
        n->e = (net **)realloc(n->e, (1 + n->numele)*sizeof(net *));
        n->e[n->numele] = ne;
        n->numele = n->numele + 1;
    }
}

网络nne已在代码中的其他位置初始化,因此您可以假设它们不会为空。

1 个答案:

答案 0 :(得分:0)

realloc()的代码似乎没问题。但是,如果net *n的第一次调用未正确初始化add(),即numele != 0 && e != NULL。在这种情况下,e可能会有一些垃圾值,realloc()尝试使用无效地址。这样就可能发生错误。