结构字节大小计算

Struct Byte size calulation

我无法弄清楚结构大小的计算方式。

为什么这些结构中有 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"))

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.