gpt4 book ai didi

c - 在VS2010中调试时隐藏结构体成员的值

转载 作者:行者123 更新时间:2023-11-30 14:22:21 24 4
gpt4 key购买 nike

我将列表定义为:

typedef struct LinkNode LinkNode;
struct LinkNode {
int value;
LinkNode *next;
};

我在 main() 中使用这个 LinkNode 类型:

int main()
{
LinkNode *p;
...
}

当我在VS2010中进行单步调试时,有时调试器将局部变量p的值显示为0xcccccccc{value = ??? next = ???},但我困惑的是在某些情况下 p->value 和 p->next 的值在调试中隐藏,p 的值显示为 Oxcccccccc。 (成员(member)值(value)不可见)

我不知道这些表示背后的机制是什么。我只是用几乎相同的代码(不同的变量名但相同的数据结构)测试了两个项目,结果如上。那么问题出在哪里呢?

谢谢!

最佳答案

LinkNode *p 是一个未初始化的指针。您必须首先构造对象,就像编写 int* a 并尝试查看 a 指向什么。你必须写这样的东西:

struct LinkNode {
LinkNode(int value = int(), LinkNode* next = nullptr) :
value(val), next(next)
{
}

int value;
LinkNode *next;
};

int main()
{
LinkNode* p = new LinkNode();
...
delete p;
}

编辑
在c中你必须使用malloc和free...不允许new和delete。

typedef struct LinkNodeTag {         
int value;
struct LinkNodeTag *next;
} LinkNode;

LinkNode a = malloc(...);
free(a);

不幸的是,我不记得 malloc 和 free 是如何工作的......

关于c - 在VS2010中调试时隐藏结构体成员的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com