相关疑难解决方法(0)

C++ Sizeof给出了不可预测的结果

可能重复:
为什么'sizeof'给出错误的测量?

我有一个名为CBUFFER_PEROBJECT的结构:

struct CBUFFER_PEROBJECT
{
    D3DXMATRIX Final;
    D3DXMATRIX Rotation;
};
Run Code Online (Sandbox Code Playgroud)

在另一堂课中,我这样做:

...
bd.ByteWidth = sizeof(CBUFFER_PEROBJECT); 
...
Run Code Online (Sandbox Code Playgroud)

我发现D3DXMATRIX的大小是64,所以64 + 64 = 128(对吧?).但我的编译器正在玩我的技巧(Visual C++),因为当我调试程序时,bd.ByteWidth变为132,所以我去了立即窗口(Visual Studio),并输入:

sizeof(D3DXMATRIX) + sizeof(D3DXMATRIX)
Run Code Online (Sandbox Code Playgroud)

结果是:

128
Run Code Online (Sandbox Code Playgroud)

但是bd.ByteWidth变为132,当我在"立即窗口"中键入以下内容时:

sizeof(CBUFFER_PEROBJECT)
Run Code Online (Sandbox Code Playgroud)

它给了我:

128
Run Code Online (Sandbox Code Playgroud)

c++ debugging visual-c++

4
推荐指数
1
解决办法
915
查看次数

struct sizeof结果不是预期的

我有一个如此定义的结构:

typedef struct _CONFIGURATION_DATA {
    BYTE configurationIndicator;
    ULONG32 baudRate;
    BYTE stopBits;
    BYTE parity;
    BYTE wordLength;
    BYTE flowControl;
    BYTE padding;
} CONFIGURATION_DATA;
Run Code Online (Sandbox Code Playgroud)

现在,通过我的计算,该结构长度为10个字节.但是,sizeof报告它长16个字节?谁知道为什么?

我正在使用Windows DDK中的构建工具进行编译.

c++ struct sizeof

3
推荐指数
1
解决办法
826
查看次数

标签 统计

c++ ×2

debugging ×1

sizeof ×1

struct ×1

visual-c++ ×1