【问题标题】:Pointer assignment not working while debugging调试时指针分配不起作用
【发布时间】:2012-04-19 16:47:32
【问题描述】:

我有一个包含两个指针的结构,

两个指针都指向另一个结构——节点。
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 相同的位置。继承人在运行该行之前和之后的调试:

行前

行后

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

【问题讨论】:

  • 会不会和编译器优化有关?当您在没有优化的情况下构建时会发生这种情况吗?是否会在后续步骤之后进行更新?
  • 它似乎指向NULL(由其他值变化证明),但Eclipse 仍将其显示为NULL。 Eclipse 错误?

标签: c pointers null-pointer


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多