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
已在代码中的其他位置初始化,因此您可以假设它们不会为空。
答案 0 :(得分:0)
realloc()
的代码似乎没问题。但是,如果net *n
的第一次调用未正确初始化add()
,即numele != 0 && e != NULL
。在这种情况下,e
可能会有一些垃圾值,realloc()
尝试使用无效地址。这样就可能发生错误。