我可以强制 C++ class 使用最少量的 space 进行编译吗?
Can I force a C++ class to compile using the minimum amount of space?
我有一个 class,我将实际实例化数十亿个。我尽我所能在其中放入尽可能少的数据,并且在为 x64 架构编译时将其减少到 10 个字节:一个 unsigned short int
和一个 size_t
。但是,当我将鼠标悬停在 sizeof(myclass)
上时(在 VS 中),它报告 16 个字节。如果我注释掉其中任何一个字段,class 的大小就是您所期望的,分别为 10 个字节和 2 个字节。
有没有办法指示编译器只为我的 class 使用 10 个字节?
#pragma pack
可以使您的结构更小。另一方面,它会使检索成员数据变慢,因为不能保证字节对齐。因此,编译器将需要额外的指令来从不同的内存位置获取数据。有关详细信息,此 link 具有出色的 post:#pragma pack effect
我有一个 class,我将实际实例化数十亿个。我尽我所能在其中放入尽可能少的数据,并且在为 x64 架构编译时将其减少到 10 个字节:一个 unsigned short int
和一个 size_t
。但是,当我将鼠标悬停在 sizeof(myclass)
上时(在 VS 中),它报告 16 个字节。如果我注释掉其中任何一个字段,class 的大小就是您所期望的,分别为 10 个字节和 2 个字节。
有没有办法指示编译器只为我的 class 使用 10 个字节?
#pragma pack
可以使您的结构更小。另一方面,它会使检索成员数据变慢,因为不能保证字节对齐。因此,编译器将需要额外的指令来从不同的内存位置获取数据。有关详细信息,此 link 具有出色的 post:#pragma pack effect