C sizeof(结构)在vs2013的监视窗口中显示错误的大小

C sizeof(结构)在vs2013的监视窗口中显示错误的大小,c,visual-studio-2013,gdb,sizeof,C,Visual Studio 2013,Gdb,Sizeof,我不明白为什么我的代码返回它所做的sizeof运算符的值 #包括 #包括 类型定义结构{ 短x; 短y; }XY_T; 类型定义结构{ XY_T af[960]; int top; int-dummy1; int-dymmy2; int-dymmy3; }堆叠; void func() { int size=sizeof(堆栈); } IDE:vs2013 操作系统:Windows7 中央处理器:英特尔i7 当我在没有优化选项的调试模式下运行代码时,变量size的值为3856,但监视窗口显示的

我不明白为什么我的代码返回它所做的
sizeof
运算符的值

#包括
#包括
类型定义结构{
短x;
短y;
}XY_T;
类型定义结构{
XY_T af[960];
int top;
int-dummy1;
int-dymmy2;
int-dymmy3;
}堆叠;
void func()
{
int size=sizeof(堆栈);
}
IDE:vs2013

操作系统:Windows7

中央处理器:英特尔i7

当我在没有优化选项的调试模式下运行代码时,变量
size
的值为3856,但监视窗口显示的
sizeof(STACK)
的值为3844

使用gcc(版本5.4.0 20160609,Ubuntu 5.4.0-6ubuntu1~16.04.11)和gdb(版本Ubuntu 7.11.1-0ubuntu1~16.5)进行测试,并在Linux pc1623754 4.15.0-64-generic#73~16.04.1-Ubuntu SMP 9月13日星期五09:56:18 UTC 2019 x86_64 x86_64 GNU/Linux上运行 我自己得到了答案。 这是智能感知问题。
谢谢大家。

你们怎么能在监视窗口中添加编译时常量呢?那一开始就没有多大意义。我看到了3856,正如预期的那样。如果没有“虚拟”成员,您只能获得3844。因此,您可能正在调试旧版本的源代码。闻起来像个地狱般的问题。@Lundin,首先谢谢你的回答。所以你说我不应该在watch窗口中检查sizeof(结构)结果?。在这种情况下,为什么我得到了其他情况下的正确结果(我的意思是,我已经使用watch窗口检查了sizeof(structure)result)。“你能给我解释一下吗?”汉斯·帕桑,谢谢你的帮助。但是我已经清理了我的项目好几次了。我甚至重新运行vs2013并重试,但我得到了相同的结果。声明一个类型为
STACK
的变量,并使用手表和内存窗口(我不知道它的确切名称),准确地查看哪些数据流向哪个位置。可能存在一些对齐问题/填充字节或其他问题。为了更好地理解,您可能还需要获取其他结构成员的
sizeof()