【发布时间】:2012-12-27 18:26:57
【问题描述】:
我有一个名为 CBUFFER_PEROBJECT 的结构:
struct CBUFFER_PEROBJECT
{
D3DXMATRIX Final;
D3DXMATRIX Rotation;
};
在另一个班级我这样做:
...
bd.ByteWidth = sizeof(CBUFFER_PEROBJECT);
...
我发现 D3DXMATRIX 的大小是 64,所以 64+64 = 128(对吗?)。但是我的编译器在和我开玩笑(Visual C++),因为在我调试程序的时候,bd.ByteWidth 变成了 132,所以我去了即时窗口(Visual Studio),然后输入:
sizeof(D3DXMATRIX) + sizeof(D3DXMATRIX)
结果是:
128
但是 bd.ByteWidth 变成了 132,当我在“立即窗口”中输入以下内容时:
sizeof(CBUFFER_PEROBJECT)
它给了我:
128
【问题讨论】:
-
64 + 64 是 128,根据问题,64 + 64 可能是预期的结果。
-
根据您的编译器设置,您可以在结构/类上添加填充...您还可以添加指向 vtable 的指针的大小等。
-
CBUFFER_PEROBJECT不会有 vtable。 -
发布一个完整但最小的程序来演示问题
-
看起来像您告诉我们的编译器错误。尝试制作一个暴露它的最小示例。
标签: c++ debugging visual-c++