我无法弄清楚如何计算结构大小。
为什么其中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"))
答案 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。