c - 调试时指针分配不起作用

标签 c pointers null-pointer

我有一个包含两个指针的结构, 两个指针都指向另一个结构 - 节点。

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;

我想让iterator 指针指向与head 相同的位置。这是运行该行之前和之后的调试:

行前 enter image description here

行后 enter image description here

如您所见,运行该行后,map->iterator 仍指向 0x0..这是为什么呢?

最佳答案

您的第二张图片表明指针分配已经发生,突出显示了对 map->iterator 成员的更改。我想象该方法运行完成,返回指针 0x9918f0

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

关于c - 调试时指针分配不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10232866/

相关文章:

c - (int *)0是空指针吗?

c++ - 类的成员应该是指针吗?

c++ - 使用 *(pointer+i) 与 pointer[i]

c - 在 C 中处理来自多个库的错误代码

c++ - 对于 Msp430 Controller 编码

c++ - 从原始指针到 boost::shared_ptr 的转换:使用 share_from_this 的树实现

c++ - 代码中未初始化的指针

c - 设置一个指针,保留NULL

C程序中的C++头文件和实现代码

c - 使用 "mmap"从文件读取时得到空输出