Net ist eine Struktur, dierealloc(): ungültiger Zeiger in C
typedef struct net{
int numele;
struct net **e;
} net;
Der folgende Code stellt sich die Fehler enthalten:
realloc(): invalid pointer
Die realloc Probleme verursacht, wenn auf sie zugegriffen wird, und gibt das oberer Fehler. Ich verstehe nicht warum. Wenn du denkst, dass es in diesem Teil des Codes kein Problem gibt, lass es mich wissen, weil der ganze Code 800 Zeilen lang ist, also denke ich nicht, dass ich es hier posten kann.
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;
}
}
Die Netze n
und ne
sind bereits an anderer Stelle im Code initialisiert, Sie können so davon ausgehen, dass sie nicht null sein wird.
[Bitte lesen Sie diese Diskussion darüber, warum nicht der Rückgabewert von 'malloc()' und Familie in 'C' umgewandelt werden soll. (Http://stackoverflow.com/q/605845/2173917). –
Sie kümmern sich um die Erstellung eines [___MCVE___] (http://stackoverflow.com/help/mcve)? –
@SouravGhosh - Ich habe neulich ein nettes Feature von Kommentaren gelernt, wenn Sie das Markup '[mcve]' eingeben, wird zu [mcve] erweitert. – StoryTeller