这可能是非常基本的问题,但我在尝试解决某个 Valgrind问题时遇到了它们。显然,错误是由自定义结构上未初始化的填充字节引起的。虽然我已经掌握了结构填充的整个概念,但我仍然对如何管理数据对齐存在疑问。我在几个网站和问答中找到了很多关于这个主题的信息,但我仍然有一些挥之不去的疑问:
字节对齐(读取的数据块的大小)是在系统范围内设置的,由编译器为整个程序选择,还是特定于我的代码中的每个结构(如果是,它是否在二进制文件中硬编码)?与系统架构(32 位与 64 位)的关系究竟是什么?我怎样才能找到我当前使用的默认值?