【发布时间】: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;
}
}
网络n 和ne 已经在代码中的其他地方初始化,因此您可以假设它们不会为空。
【问题讨论】:
-
你介意创建一个MCVE吗?
-
@SouravGhosh - 前几天我学到了 cmets 的一个简洁功能,如果你输入标记
[mcve]会扩展为 minimal reproducible example。 -
@StoryTeller 对,就是这样,在建议edit时也有帮助。
-
发布的代码如果效率低下似乎还可以(除了未检查 malloc/realloc 的返回值)。问题出在其他地方。
标签: c pointers realloc double-pointer