C 在VS2010中调试时,结构成员的值是隐藏的

C 在VS2010中调试时,结构成员的值是隐藏的,c,visual-studio-2010,debugging,C,Visual Studio 2010,Debugging,我将列表定义为: typedef struct LinkNode LinkNode; struct LinkNode { int value; LinkNode *next; }; 我在main()中使用这个LinkNode类型: 当我在VS2010中进行单步调试时,有时调试器会将局部变量p的值显示为0xCCCC{value=???next=???},但我混淆的是,在某些情况下,p->value和p->next的值在调试中隐藏,p的值显示为oxCCCC。(成员资格的值不可见

我将列表定义为:

typedef struct LinkNode LinkNode;
struct LinkNode {
     int value;
     LinkNode *next;
};
我在main()中使用这个LinkNode类型:

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

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


谢谢

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。。。不允许新建和删除

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

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

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

0xcccc
是Visual Studio调试器中典型的未初始化内存。调试器无法显示成员是什么,因为指针未初始化。我同意,但无论指针是未初始化的还是已分配的,成员都不会显示在局部变量窗口中。是否在项目的C/C++属性中启用了优化?
typedef struct LinkNodeTag {         
     int value;
     struct LinkNodeTag *next;
} LinkNode;

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