【问题标题】:realloc() : Invalid pointer in Crealloc() : C 中的无效指针
【发布时间】:2017-03-08 06:45:30
【问题描述】:

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 已经在代码中的其他地方初始化,因此您可以假设它们不会为空。

【问题讨论】:

标签: c pointers realloc double-pointer


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2017-09-16
    • 1970-01-01
    • 2022-06-30
    相关资源
    最近更新 更多