我知道结构打包在C ++编程中很常见(至少在低内存系统上)。但是课程呢? 我知道它有效,因为我试过了
#include <iostream>
#pragma pack(push, 1)
class Test_Packed {
uint8_t t;
uint32_t test;
};
#pragma pack(pop)
class Test_Unpacked {
uint8_t t;
uint32_t test;
};
int main() {
std::cout<<sizeof(Test_Packed) << " / " << sizeof(Test_Unpacked)<<std::endl;
return 0;
}
正确输出“5/8”。
我可以假设所有符合规范的编译器都是这种情况,还是定义了这种实现?
我知道添加虚拟成员(因此需要vtable)会在前面添加额外的数据。可能是其他原因导致失败?
除了某些平台上的性能不佳外,这会导致任何问题吗?
答案 0 :(得分:1)