2012-04-19 46 views
1

我有一個包含兩個指針的結構,< head,iterator>兩個指針指向另一個struct - Node。調試時指針分配不工作

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; 

我想讓迭代指針指向相同的位置。繼承人之前Debbuging和捉迷藏行之後:

之前 enter image description here

enter image description here

正如你可以看到,這條線之後,MAP-後>迭代器仍然指向0x0 ..爲什麼?

+0

它可能與編譯器優化有關嗎?當你沒有優化的時候會發生這種情況嗎?更新是在未來的步驟之後發生的嗎? – TJD 2012-04-19 16:49:45

+2

它似乎* not *指向'NULL'(正如其他值發生變化所證明的那樣),但Eclipse仍然將其顯示爲NULL。 Eclipse錯誤? – user7116 2012-04-19 16:50:58

回答

1

您的第二張圖片顯示指針分配已出現,這突出顯示了map->iterator成員的更改。我想象的方法運行完成,返回指針0x9918f0

這使我相信你實際上沒有遇到指針賦值的失敗,而只是在調試器(Eclipse)中顯示更新值的失敗。這可能是由於Eclipse中的一個錯誤,或者可能是由於Eclipse可用的調試信息不​​足。僅憑舉例就很難說。