7

Cコードのこのビットは、gdbでセグメンテーションエラーを引き起こしています

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

どこ:

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

実行時に、このコード スニペットの直前に gdb にブレークポイントを追加すると (これは単なる別の printf() ステートメントです)、値は次のようになります。

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

次に、次を押すと、mallocでセグメンテーション違反が発生します

本当にわからない……。

4

1 に答える 1

1

確かにそのようでした...誤って計算されたsizeof()の以前のmallocが、このmallocが失敗した理由でした。

于 2012-09-20T07:44:27.817 に答える