为什么这个结构32的大小?

tot*_*oto 2 c++

这是结构.

//Structure pour communiquer les paramètres de traitement à travers le MMF
struct params_traitement_mmf
{
    int brilliance;
    double contraste;
    char convolution[9];
};
Run Code Online (Sandbox Code Playgroud)

这是我显示此结构大小的代码:

    char valeur[10];
    sprintf(valeur, "%d", sizeof(params_traitement_mmf));
    MessageBoxA(NULL, valeur, "rien", MB_OK);
Run Code Online (Sandbox Code Playgroud)

MessageBox显示32.谢谢!

Rem*_*anu 6

什么包装?并编译为什么平台?x86,AMD64和IA64之间的对齐要求不同.包装可能会对结构尺寸造成严重破坏.

假设默认打包(8)和AMD64目标(或x86,没有区别),你有8个字节brilliance(4个字节大小,4个字节浪费),8个字节contraste,然后16个字节convolution(9字节大小,7个字节)浪费).总计32,这似乎与你得到的一样.