代碼如下,看起來好像沒什麼問題。我的GCC犯規找到alloc.h分段錯誤,未分配內存
print(node *q)
39 {
40 node *p=q;
41 do
42 {
43 printf("%d",p->n);
44 if(p->ptr != NULL)
45 p=p->ptr;
46 else
(GDB)PP $ 1 =(節點*)爲0x0
在哪裏內存分配代碼
if(p== NULL)
{
p=(node *)malloc(sizeof(node));
if(p== NULL)
printf("The malloc failed\n");
p->n=num;
p->ptr=NULL;
}
當我運行這調試器沒有malloc失敗的消息。
任何人都可以幫忙。 問候
Sraddha
add(node **q)
{
node *p=*q;
int num;
printf("Enter the number you want to add");
scanf("%d", &num);
if(p== NULL)
{
p=(node *)malloc(sizeof(node));
if(p== NULL)
printf("The malloc failed\n");
p->n=num;
p->ptr=NULL;
}
}
是'在p'傳遞給分配函數作爲參數(類型爲'節點*')的任何機會? – Mat 2012-02-10 11:24:05
你可以編輯你的帖子來顯示該循環的其餘部分,並說出segv的發生地點嗎?而且,正如Mat所暗示的那樣,也顯示了整個分配功能。 – Useless 2012-02-10 11:24:57
是p被聲明爲節點* p; – sraddhaj 2012-02-10 11:28:15