Cプログラムで問題が発生しました。私は作業する必要があります(C++ではなく)。ポインタがnullに初期化されて0x1に変更されました
私はリストと呼ばれる構造体typedefを持っています。私はこの機能を持っている:私はこれの出力は次のようになり、この
list l;
printf("malloc\n");
init(&l);
printf("Pointer= %p\n", (void *) l.next);
を持って、別のファイルで
void init(list * l){
l=malloc(sizeof(list));
l->data=NULL;
l->index=NULL;
l->next=NULL;
printf("Pointer= %p\n", (void *) l->next);
}
戻る(とき以下のOSの上で):
malloc
Pointer= (nil)
Pointer= 0x1
ことができます誰でもこれが突然NULLから0x1に変わる方法を私に説明してください。私が0x1としてこれを使用しようとすると、実際には私を悩ませています。
このコードはMacBookではうまく動作しますが、CentOSとUbuntu 16.04では上記の出力が生成されます。 私はそれがNULLにとどまっていることを確認できますか?私は愚かですか?あなたがする必要がどのような
おかげ
'l =(list *)malloc(sizeof(list));'を削除します。再度試してください。 – BLUEPIXY
同じこと。私は望みを持ってそれを変更しました:P私はそれを問題からとにかく取り除きます。 – Christopher
'malloc'を削除してから**あなたのポーグラム全体**を表示します。それが大きすぎると最小限に抑えるには、[mcve]を参照してください。 –