-4
넷 무효 포인터는 다음 코드는 에러를 발생realloc을() 다음으로 realloc 문제를 일으키는</p> <blockquote> <p>realloc(): invalid pointer</p> </blockquote> <p>가 액세스 될 때마다 상기 제공 : C
typedef struct net{
int numele;
struct net **e;
} net;
포함하는 구조이며 위의 오류. 나는 왜 그런지 이해하지 못한다. 코드의이 부분에 문제가 없다고 생각되면 전체 코드가 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
이미 코드에서 다른 곳 초기화됩니다, 그래서 당신은 null가되지 않을 것이라고 가정 할 수있다.
['malloc()'의 반환 값과'C'의 패밀리를 형 변환하지 않는 이유에 대한이 토론을 참조하십시오.] (http://stackoverflow.com/q/605845/2173917). –
[___MCVE___] (http://stackoverflow.com/help/mcve)를 만드시겠습니까? –
@SouravGhosh - 언젠가는 '[mcve]'가 [mcve]로 확장 된 마크 업을 입력하면 멋진 의견을 알게되었습니다. – StoryTeller