2013-04-07 18 views
5

Il mio codice:realloc: Invalid prossima dimensione, rilevato da glibc

 
int args_size = 5; 
char** args; 

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

// ... 

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

Voglio aumentare la dimensione di 5.

Ma ottengo questo errore:

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

lo so che una variabile temporanea che cattura realloc è buona, ma solo per semplicità ...

+0

Che cos'è 'macro-> args'? – cnicutar

+0

@cnicutar arrrr aorry L'ho corretto. – Sam

+0

non eseguire il ritorno di 'malloc'. programmare effetti collaterali con '+ =', argh. –

risposta

5

RISOLTO

Inizialmente, la dimensione di args è 5 elementi. Poiché il programma stava compilando args, è stato erroneamente aggiunto 6 ° elemento e quindi chiamando realloc.

Che ha causato l'errore menzionato nella domanda.

problema è risolto eliminando l'errore, seguendo i commenti di WhozCraig, Jens Gustedt e altri ...

Grazie a tutti!