【发布时间】:2013-05-31 12:35:10
【问题描述】:
是否有自动将结构填充到最小大小的 C++(或 MSVC)方法?例如,想象下面的伪代码:
#pragma pad(256) // bytes
struct SETUPDATA {
int var1;
double var2;
};
where sizeof(SETUPDATA) = 256 bytes
这里的目标是,在开发过程中,这个结构的成员可以在不改变运行时的足迹大小的情况下改变。
【问题讨论】:
-
比尔盖茨曾经说过 640k 就够了... :)
-
您可以尝试使用
char[256]将其包装在一个联合中。 -
Union 不会阻止大小变大,使用 static_assert() 验证它没有改变。
-
您不会希望在这种情况下使用 int。大小不保证为 32 位。您想使用 int32_t
-
我认为这是一个想法,改变成员而不改变运行时的足迹?这只是……一个坏主意。
标签: c++ visual-c++ memory-management