2013-04-07 8 views
5

Mein Code:realloc: nächste Größe ungültig, erfasst von glibc

 
int args_size = 5; 
char** args; 

args = (char**) malloc(sizeof(char*) * args_size); 

// ... 

args = (char**) realloc(args, sizeof(char*) * (args_size += 5)); 

Ich möchte von 5.

die Größe erhöhen, aber ich bekomme diese Fehlermeldung:

 
*** glibc detected *** ./a.out: realloc(): invalid next size: 0x0000000000a971c0 *** 

Ich weiß, dass eine temporäre Variable Realloc fangen ist gut, aber nur aus Gründen der Einfachheit ...

+0

Was ist 'Makro-> Args'? – cnicutar

+0

@cnicutar arrrr aorry Ich habe es korrigiert. – Sam

+0

werfen Sie nicht die Rückkehr von 'malloc'. Programmierung von Nebenwirkungen mit '+ =', argh. –

Antwort

5

Gelöst

Anfangs ist die Größe args 5 Elemente. Als das Programm args füllte, fügte es versehentlich 6th Element hinzu und rief dann realloc.

Das verursachte den Fehler, der in der Frage erwähnt wird.

Problem wird durch die Beseitigung der Fehler behoben, indem Sie die Kommentare von WhozCraig, Jens Gustedt und andere ...

Danke an alle!