Tho*_* W. 7 c++ struct memory-management data-structures
在我的代码中,我有以下内容struct:
struct foo {
int a;
int b;
};
Run Code Online (Sandbox Code Playgroud)
在b,仅存储0到100之间的值.所以一般来说,我可以用一个替换它char.但是struct由于填充效果的大小相同.由于我的代码包含vectors并且sets具有数百万个条目的这些结构,如果我能以某种方式规避填充,它将使内存使用量减少三分之一以上.有没有可能这样做,例如一些其他(boost)数据容器的行为方式相同?
编辑:我在Linux系统上同时使用GNU和Intel编译器:
正如社区建议的那样,将我的评论作为答案移动:)
这取决于编译器.你需要的是使用struct packing.
对于Visual Studio,您需要#pragma pack和for gcc,您需要使用属性packed.
有关更多信息,请参阅C++ struct alignment问题
希望有所帮助,抱歉我现在无法真正测试它,但这就是你所需要的