2012-08-08 6 views
7

Dieses Bit von C-Code fahren ist Segmentierung Fehler in gdb gebensigsev Fehler auf malloc, die mir Nuss

if ((seq_entry_action=malloc((seq_subphases)*sizeof(int*)))==NULL){ 
    printf("Cannot allocate memory for seq_entry_action\n"); 
} 

wo:

int **seq_entry_action=NULL; 
unsigned int seq_subphases=0; 

Zum Zeitpunkt der Ausführung, und wenn ich einen Haltepunkt hinzufügen kurz vor diesem Code-snippet in gDB (es ist nur ein weiterer printf() Anweisung), die Werte sind

(gdb) p seq_subphases 
$3 = 88 
(gdb) p seq_entry_action 
$4 = (int **) 0x0 

dann I p resse nächste und es Segfaults bei malloc

ich es wirklich nicht bekommen .....

+11

Das liegt normalerweise daran, dass Sie Ihren Heap beschädigt haben. Das bedeutet, dass der Fehler überall in Ihrem Code auftreten kann. Probiere 'Valgrind' aus. – Mat

+1

Lief das Bit Code unter Centos 6.2 und GCC Version 4.4.6 und es kompiliert und lief gut, was bedeutet, irgendwo Sie Ihren Haufen beschädigt. –

+11

+1 für die erste heute auf SO, wer nicht den Return-Wert von malloc wirft. –

Antwort

1

es so, dass in der Tat war ... eine frühere malloc von falsch berechnet sizeof() war der Grund, warum diese malloc gescheitert .