gpt4 book ai didi

c++ - 关于特定结构的数据对齐

转载 作者:行者123 更新时间:2023-11-28 07:21:37 30 4
gpt4 key购买 nike

这可能是非常基本的问题,但我在尝试解决某个 Valgrind 时遇到了它们 issue .显然,该错误是由自定义结构上未初始化的填充字节引起的。虽然我已经掌握了结构填充的整个概念,但我仍然对如何管理数据对齐表示怀疑。我在几个网站和问答中找到了很多关于这个主题的信息,但我仍然有一些挥之不去的疑虑:

字节对齐(读取的数据 block 的大小)是在系统范围内设置的,由编译器为整个程序选择,还是特定于我代码中的每个结构(如果是,它是否硬编码在二进制文件中) ?与系统架构(32 位与 64 位)的关系到底是什么?我怎样才能找到我当前使用的默认值?

最佳答案

在 32 位系统上是 4 个字节,在 64 位系统上是 8 个字节
您可以更改特定结构/类的对齐方式或使用 pragma pack
获取默认值 MSDN article
GCC also supports it

您也可以通过声明一个字符结构并使用 sizeof() 来找出默认值。它将返回对齐的大小。

关于c++ - 关于特定结构的数据对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19371108/

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