gpt4 book ai didi

c++ - 是否值得对齐变量?

转载 作者:搜寻专家 更新时间:2023-10-30 23:51:53 25 4
gpt4 key购买 nike

我一直在阅读有关对齐变量的好处的文章。例如在 C/C++ 中,堆栈上的变量可以使用 __attribute__( ( aligned ( .. ) ) ) 对齐,堆内存可以使用 std::align 对齐.如果内存对齐如此重要,为什么不是所有的编译器都默认自动对齐呢?至少我会期待一个 gcc/g++ 编译器标志来自动对齐所有内容。然而,情况似乎并非如此,人们仍然手动指定内存应该使用上述方式对齐。这是为什么?值得使用上述对齐内存的方法还是有缺点?我希望在使用 -O2、-O3 标志时会发生大量内存对齐,作为优化程序的一种方式。谢谢。

最佳答案

默认情况下,所有编译器都会对齐。只是在某些情况下您需要非默认对齐方式。

基本类型的默认对齐方式是它的大小。类类型的默认对齐方式是其所有基类和数据成员的最大对齐方式。

许多实现支持(作为语言扩展)属性 [[packed]],它减少类型的对齐为 1,消除了数据成员之间的填充类类型。此类值通常作为 char[] 发送和接收,与 memcmp 等相比

其他时候您可能希望增加某些特定值的对齐方式,例如作为Max's answer详情

关于c++ - 是否值得对齐变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52731279/

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