最近Cプログラミングに戻り、私が書いているリンクリストの実装にいくつかの問題があります。リンクリストの実装を書くときのCポインタの問題
int linked_list_add_entry(linked_list** linked_list, void* data)
{
linked_list_entry* new = malloc(sizeof(linked_list_entry));
...
DPRINT("last(%p), new (%p)\n", (*linked_list)->last, new);
(*linked_list)->last->next = new;
DPRINT("(*linked_list)->last(%p)->next (%p)\n", (*linked_list)->last, (*linked_list)->last->next);
デバッグ出力付:ここで問題のコードです
typedef struct linked_list_entry {
struct linked_list_entry *next;
struct linked_list_entry *prev;
void* data;
} linked_list_entry;
typedef struct linked_list {
uint32 count;
struct linked_list_entry *first;
struct linked_list_entry *last;
} linked_list;
:ここ
は私の構造定義されている
data-types/linked-list.c:37:linked_list_add_entry(): last(0x7fa497402790), new (0x7fa4974027b0)
data-types/linked-list.c:39:linked_list_add_entry(): (*linked_list)->last(0x7fa4974027b0)->next (0x0)
任意のアイデアは、なぜ新しいへの最後のポインタの変更新しいポインタがNULLに変更されますか?
おかげ
^新しい^予約語ではありませんか? – MKR
@ManojKumarRaiいいえ、 'new'はCの予約語ではありません.C++と混同しています。 – Gilles
'* linked_list'ポインタの値は何ですか?ダンプに追加してください。 'linked_list'にどのようにメモリを割り当てますか? – AnT