malloc上的sigsev错误让我疯了

nas*_*ass 7 c malloc gdb segmentation-fault

这段C代码在gdb中给出了分段错误

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

哪里:

int **seq_entry_action=NULL;
unsigned int seq_subphases=0;
Run Code Online (Sandbox Code Playgroud)

在执行时,如果我在这段代码之前在gdb中添加一个断点(它只是另一个printf()语句),那么值是

(gdb) p seq_subphases
$3 = 88
(gdb) p seq_entry_action
$4 = (int **) 0x0
Run Code Online (Sandbox Code Playgroud)

然后我按下接下来它在malloc上的段错误

我真的不明白.....

nas*_*ass 1

确实是这样的......早期的 malloc 错误计算了 sizeof() 是这个 malloc 失败的原因。