我可以强制C++类使用最小的空间进行编译吗?
Can I force a C++ class to compile using the minimum amount of space?
我有一个类,我将实例化数十亿个。 我尽力在其中放置尽可能少的数据,当针对 x64 架构编译时,我将其减少到 10 字节:一个unsigned short int
和一个size_t
。 但是,当我将鼠标悬停在sizeof(myclass)
(在VS中)上时,它报告16个字节。 如果我注释掉任何一个字段,类的大小就是您所期望的,分别为 10 字节和 2 字节。
有没有办法指示编译器只为我的类使用 10 个字节?
#pragma pack
可以使你的结构更小。另一方面,它会使检索成员数据的速度变慢,因为不能保证字节的对齐。因此,编译器将需要额外的指令来从不同的内存位置获取数据。欲了解更多信息,此链接有一个很好的帖子:#pragma 包装效果
相关文章:
- 如何使用 soong 命名空间来有条件地编译模块
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 在编译时删除空间
- 无法获取 wig %ignore 以忽略命名空间中的类,从而导致编译错误
- C++ 使用命名空间时,模板函数无法使用 g++ 进行编译
- 当编译时已知引用占用结构中的空间时,是否错过了优化?
- 非命名空间范围内的显式专用化不会在 GCC 中编译
- 库期望平面命名空间中的符号,尽管使用两级命名空间编译
- 在命名空间中使用自己的类比较 std::vector 不会编译
- 使用命名空间别名编译 OpenCV
- 包含命名空间的类模板的前向声明会导致编译错误
- 我可以强制C++类使用最小的空间进行编译吗?
- C2653:不是没有预编译标头的类或命名空间
- 在编译时推导整个向量空间
- 每个编译单元是否只有一个未命名的命名空间
- 命名空间 X 中具有类 X 的模板类 Y 无法在 VS2010 中编译
- 是否可以在编译时获得一个包含命名空间和类名的字符串
- clang 3.3 可以在 VS 2010 中使用命名空间编译代码
- C++ 全局命名空间编译问题
- 命名空间编译问题