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 回答