【发布时间】:2017-10-08 02:16:57
【问题描述】:
我有一个类,我会从字面上实例化数十亿个。我尽了最大努力在其中放入尽可能少的数据,并在为 x64 架构编译时将其缩减到 10 个字节:unsigned short int 和 size_t。但是,当我将鼠标悬停在 sizeof(myclass)(在 VS 中)时,它会报告 16 个字节。如果我注释掉任何一个字段,类的大小就是你所期望的,分别是 10 个字节和 2 个字节。
有没有办法指示编译器只为我的类使用 10 个字节?
【问题讨论】:
-
试试
#pragma pack -
谢谢!在答案中输入
#pragma pack(2),我会将其标记为最佳答案。 -
@dfoverdx 使用
pack(1)而不是 2 -
@RemyLebeau 为什么
pack(1)我知道我的对象是偶数字节? -
@dfoverdx 如果有一天你决定添加一个 1 字节的
char或bool成员,pack(2)不会产生尽可能小的尺寸,会有 1 个字节的填充。如果您想要尽可能小的尺寸,请使用尽可能小的对齐方式。
标签: c++ compiler-optimization memory-optimization