1

< head, iterator > 両方のポインターが別の構造体 Node を指している 2 つのポインターを含む構造体があります。

typedef struct Map_t {

    Node head;
    Node iterator;

} Map_t;

typedef struct Node_t* Node;

struct Node_t {
    MapDataElement Data;
    MapKeyElement Key;

    struct Node_t *next;
};

typedef struct Map_t *Map;

イテレータポインタがheadと同じ位置を指すようにしたい。行を実行する前後のデバッグは次のとおりです。

行前 ここに画像の説明を入力

行後 ここに画像の説明を入力

ご覧のとおり、この行を実行した後でも、map->iterator はまだ 0x0 を指しています。なぜでしょうか?

4

1 に答える 1

2

のメンバーへの変更を強調する2番目の図から明らかなように、ポインターの割り当てが行われたようですmap->iterator。メソッドが最後まで実行され、ポインタが返されると思います0x9918f0

これにより、実際にはポインターの割り当てに失敗しているのではなく、更新された値を表示するデバッガー(Eclipse)に失敗しているだけだと思います。これは、Eclipseのバグが原因であるか、Eclipseで利用可能なデバッグ情報が不十分であることが原因である可能性があります。与えられた例だけで言うのは難しいです。

于 2012-04-19T16:54:33.723 に答える