对你们所有人都有疑问。你们中的许多人都会回答“它没有任何区别”,但我有点坚持认为由于问题的措辞有所不同:
'哪个班级使用最少的内存?'
他们要求一个单一的答案 - 必须有一个!我和以前的微软实习生聊天过,他坚持认为没有答案。
也许有人愿意提出他们的想法?
Which class uses the least amount of memory?
class A
{
float duration;
char code;
int count;
bool enabled;
};
class B
{
float duration;
int count;
char code;
bool enabled;
};
class C
{
char code;
int count;
bool enabled;
float duration;
};
class D
{
bool enabled;
float duration;
char code;
int count;
};
答案 0 :(得分:0)
在MSVC2010上我得到了
A = 16个字节 B = 12个字节 C = 16个字节 D = 16字节
这可能是由于不同类型的对齐。由于char和bool都很小,因此它们共享一个DWORD。
然而,这是编译器和平台无关的。没有什么能阻止编译器实现者使它们具有相同的大小或者使用64字节或其他任何字符。关于这种事情,标准的要求相当宽松。
答案 1 :(得分:0)
回答E,这一个: - )
class E
{
float duration;
char code;
int count;
bool enabled;
} __attribute__((packed));
对于其他示例,没有什么可以说的,它实际上取决于编译器,arch,......