0

有个问题想请教大家。你们中的许多人会回答“没有区别”,但我有点坚持认为问题的措辞有所不同:

“哪个类使用的内存最少?”

他们要求一个单一的答案——一定有一个!我和以前的微软实习生聊过,他坚持没有答案。

也许有些人会愿意提供他们的想法?

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;
};
4

2 回答 2

0

在 MSVC2010 我得到

A = 16 字节 B = 12 字节 C = 16 字节 D = 16 字节

这可能是由于不同类型的对齐。由于 char 和 bool 都很小,它们共享一个 DWORD。

然而,这是编译器和平台无关的。没有什么可以阻止编译器实现者将它们全部设为相同大小或将 char 设为 64 字节或其他任何内容。标准对这种事情的要求是相当宽松的。

于 2013-02-08T20:43:58.717 回答
0

答案 E,这个 :-)

class E
{
    float duration;
    char code;
    int count;
    bool enabled;
} __attribute__((packed));

其他例子没什么好说的,它真的取决于编译器,arch,......

于 2013-02-08T20:46:55.890 回答