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++ - 段错误 - 为什么以及如何工作?

由于指针和函数的交互导致的 C++ 错误

c++ - Cocos2d-x TiledMap,调用getLayer()获取碰撞层时返回nullptr?

我们可以减去 NULL 指针吗?

c++ - 破坏空指针时的访问冲突

c - 在 MSVC (Visual Studio) 中模拟 C 函数

c - 将地址传递给函数,修改后值没有改变

c - 为什么我不能列出存储在数组中的字符串?

c++ - 为什么调用分配器类的deallocate方法时指针不允许为空?

objective-c - 指针在 Objective-C 中是如何工作的