2017-10-08 5 views
1

私は文字通り数十億のインスタンスを生成するクラスを持っています。私は可能な限り小さなデータを入れるために最善を尽くしました。x64アーキテクチャー用にコンパイルすると、10バイトになりました。unsigned short intsize_tです。しかし、sizeof(myclass)(VS)の上にマウスを置くと、16バイトと報告されます。いずれかのフィールドをコメントアウトすると、クラスのサイズはそれぞれ10バイトと2バイトになります。最小限のスペースを使用してC++クラスを強制的にコンパイルできますか?

クラスに10バイトしか使用しないようにコンパイラに指示する方法はありますか?

+1

「#pragma pack」を試す – PaulMcKenzie

+0

ありがとう!答えに '#pragma pack(2)'を投げれば、私はそれを最良の答えとしてマークします。 – dfoverdx

+0

@dfoverdx 2の代わりに 'pack(1)'を使用する –

答えて

0

#pragma packは、構造を小さくすることができます。一方、バイトの整列が保証されていないため、メンバーデータの取得を遅くすることができます。結果として、コンパイラは異なるメモリ位置からデータをフェッチするために追加の命令を必要とする。詳細については、このリンクは優れた投稿をしています:#pragma pack effect

関連する問題