结构字节大小计算

时间:2015-08-06 19:07:40

标签: memory size byte autoit

我无法弄清楚如何计算结构大小。

为什么其中2个结构为8个字节(我希望其中一个为6个字节)

如果以4字节块分配,为什么第一个结构只有2个字节?

2 : DllStructGetSize(DllStructCreate("word")

4 : DllStructGetSize(DllStructCreate("float"))

8 : DllStructGetSize(DllStructCreate("float;word"))

8 : DllStructGetSize(DllStructCreate("float;word;word"))

12 : DllStructGetSize(DllStructCreate("float;word;word;float"))

1 个答案:

答案 0 :(得分:1)

AutoIt以一种使其与C dll兼容的方式分配结构。我不知道实际上究竟是什么的具体细节,但是有一些像对齐和填充这样的东西会导致你看到的结果。例如,运行此C ++代码,结果为8:

#include <iostream>

struct foo {
    float a; 
    char b;
};

int main(int argc, char const *argv[]) {
    std::cout << sizeof(foo) << std::endl;
    return 0;
}

如果您想了解这是最好的选择,请看C结构和内存打包。我暂时没有调查它,但试试this