C++:数据对齐和内存的有效使用(在时间和空间上)

标签 c++

大家干杯!

我想将一些数据存储在内存中的结构或数组中。我的问题是数据对齐。我真的不能在 char 旁边使用 8 字节数据,因为它们一起占用 16 字节。

现在我很乐意使用一个 8 字节的字段,例如 char,并使用剩余的 7 个字节来存储其他数据。

我该怎么做?支付的性能惩罚是什么? 谢谢大家。

最佳答案

您可以使用位域自动执行 Arkku 建议的位移数学运算:

struct {
    uint64_t  one_byte:8;
    uint64_t  seven_byte:56;
};

会有轻微的访问开销,但如果您计划使用如此多的空间以至于空间非常宝贵,那么这是值得的。在如此多的内存上,改进的缓存局部性将很容易抵消一些移位/掩码操作。

关于C++:数据对齐和内存的有效使用(在时间和空间上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4231865/

相关文章:

C++运行直到按键

c++ - 枚举和定义语句之间的区别

c# - 在 C# 中使用 C++ dll

c++ - Qt QTableView 行颜色

c++ - 基于并行位操作的 openMP 素数查找器?

c++ - 使用 Win32 API 和 GDI 绘制窗口的无效区域

c++ - 数组与 std::initializer_list 作为函数参数

c++ - CUDA 内核调用阻塞?

c++ - fsutil queryfilenamebyid 命令的 Winapi 等价物

c++ - 查找 include 指令使用了哪个文件