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