コードは次のとおりですが、何も問題はないようです。私の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)頁 $ 1 =(ノード*)を0x0
とメモリが割り当てられているコードをされて見つけるdoesntの
if(p== NULL)
{
p=(node *)malloc(sizeof(node));
if(p== NULL)
printf("The malloc failed\n");
p->n=num;
p->ptr=NULL;
}
私はこれを実行しますデバッガmallocが失敗したというメッセージはありません。
誰でも手助けできます。 hmjdの答えによって対処問題に加えて
add(node **q)
{
int num;
printf("Enter the number you want to add");
scanf("%d", &num);
if(*q == NULL)
{
*q = malloc(sizeof(node)); /* no need to cast return value. */
/* Corrected if logic to not access failed malloc. */
if(*q == NULL)
{
printf("The malloc failed\n");
}
else
{
*q->n=num;
*q->ptr=NULL;
}
}
}
は '万が一引数(タイプの'ノード* ')とアロケータ関数に渡さp'ですか? – Mat
あなたの投稿を編集して、そのループの残りの部分を表示してください。また、segvの発生場所も教えてください。また、Matが示唆するように、割り当て関数全体を表示します。 – Useless
はいpはノード* pとして宣言されています。 – sraddhaj