gpt4 book ai didi

c++ - 避免在 C++ 中使用结构填充

转载 作者:可可西里 更新时间:2023-11-01 18:28:34 25 4
gpt4 key购买 nike

在我的代码中,我有以下结构:

struct foo {
int a;
int b;
};

b 中,只存储 0 到 100 之间的值。所以一般来说,我可以用 char 替换它。但是由于填充效应,struct 的大小是相同的。由于我的代码包含具有数百万个条目的这些结构的vectorssets,如果我能以某种方式规避填充,它将使内存使用量减少三分之一以上。有没有可能做到这一点,例如一些其他(提升)数据容器以相同的方式运行?

编辑:我在 Linux 系统上同时使用 GNU 和 Intel 编译器:

最佳答案

将我的评论作为答案,正如社区建议的那样:)

这取决于编译器。您需要的是使用 struct packing。

对于 Visual Studio,您需要 #pragma pack,对于 gcc,您需要使用属性 packed

有关详细信息,请参阅 C++ struct alignment question

希望对您有所帮助,抱歉,我现在无法真正测试它,但这就是您所需要的

关于c++ - 避免在 C++ 中使用结构填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com