Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于特定结构的数据对齐_C++_Performance_Build_Alignment - Fatal编程技术网

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

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

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


字节对齐(读取数据块的大小)是在系统范围内设置的,是由编译器为整个程序选择的,还是针对代码中的每个结构设置的(如果是,是在二进制文件上硬编码的)?与系统架构(32位与64位)的关系到底是什么?如何找到当前用作默认值的值

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



您还可以通过声明一个char结构并使用sizeof()找到默认值。它将返回对齐的大小