0

皆さんに質問があります。あなたの多くは「違いはありません」と答えるでしょうが、私は質問の言葉遣いによる違いがあると断言します:

「メモリ使用量が最も少ないのはどのクラスですか?」

彼らは特異な答えを求めています - あるに違いありません! Microsoft の以前のインターンと話をしたことがありますが、彼は答えがないと断言しています。

たぶん、自分の考えを提供したいと思う人もいますか?

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));

他の例については何も言えません。実際にはコンパイラ、アーキテクチャに依存します...

于 2013-02-08T20:46:55.890 に答える