1

我有一个包含两个指针的结构, <head, iterator> 两个指针都指向另一个结构 - Node.js。

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

正如您的第二张图片所证明的那样,指针分配似乎已经发生,它突出显示了对map->iterator. 我想该方法运行完成,返回指针0x9918f0

这使我相信您实际上并没有遇到指针分配失败,而只是调试器(Eclipse)显示更新值的失败。这可能是由于 Eclipse 中的错误,也可能是由于 Eclipse 可用的调试信息不​​足。仅凭给出的例子很难说。

于 2012-04-19T16:54:33.723 回答