Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.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_Memory Management_Memory Alignment_Low Level - Fatal编程技术网

C 什么';内存对齐的目的是什么?为什么我需要它?

C 什么';内存对齐的目的是什么?为什么我需要它?,c,memory-management,memory-alignment,low-level,C,Memory Management,Memory Alignment,Low Level,我已经读了很多关于内存对齐的书,但我不明白,我知道这是一种重要的方法,要编写高效的代码,你必须牢记这一点。但我感到困惑。基本上,CPU从内存中读取数据时一次只读取一个“字”,字是CPU的自然位。如果一个多字节值在字边界上没有对齐,CPU必须发出两次(或更多)读取以获取该值,这会降低效率。写作也是一样。这太简单了。一些处理器要求更大的数据类型比在字边界上更严格地对齐。double比int更严格地对齐并不少见,int被视为“字号”。@TomKarzes:是的,这绝对是一种过于简单化的做法。试试维基百

我已经读了很多关于内存对齐的书,但我不明白,我知道这是一种重要的方法,要编写高效的代码,你必须牢记这一点。但我感到困惑。

基本上,CPU从内存中读取数据时一次只读取一个“字”,字是CPU的自然位。如果一个多字节值在字边界上没有对齐,CPU必须发出两次(或更多)读取以获取该值,这会降低效率。写作也是一样。

这太简单了。一些处理器要求更大的数据类型比在字边界上更严格地对齐。
double
int
更严格地对齐并不少见,
int
被视为“字号”。@TomKarzes:是的,这绝对是一种过于简单化的做法。试试维基百科。