7
chút này của mã C là đưa ra lỗi phân hóa trong gdbsigsev trên malloc đó là lái xe cho tôi hạt
if ((seq_entry_action=malloc((seq_subphases)*sizeof(int*)))==NULL){
printf("Cannot allocate memory for seq_entry_action\n");
}
nơi:
int **seq_entry_action=NULL;
unsigned int seq_subphases=0;
Tại thời điểm thực hiện, và nếu tôi ghi thêm một breakpoint trong gdb ngay trước đoạn mã này (chỉ là một câu lệnh printf() khác, các giá trị là
(gdb) p seq_subphases
$3 = 88
(gdb) p seq_entry_action
$4 = (int **) 0x0
then I p ress tiếp theo và nó segfaults tại malloc
tôi thực sự không có được nó .....
Đó thường là do bạn đã làm hỏng heap của mình. Điều đó có nghĩa là lỗi có thể chỉ là về bất cứ nơi nào trong mã của bạn. Hãy thử 'valgrind'. – Mat
Chạy đoạn mã đó dưới centos 6.2 và gcc phiên bản 4.4.6 và nó được biên dịch và chạy tốt có nghĩa là một nơi nào đó bạn đã làm hỏng heap của mình. –
+1 để trở thành người đầu tiên ngày hôm nay trên SO người không bỏ giá trị trả lại của malloc. –