内存对齐

在看C++反汇编一书时,在类的一章前面介绍了结构体中变量的内存分配,会遵循一些对齐的原则,导致分配的字节数会有所差异。
那么问题是,为什么要使用内存对齐,以及遵循哪些规则。

为什么内存对齐

这和CPU有关,32位的CPU对应的是一次从内存中读取4字节,并且每次都是从4的倍数的地址开始读。
使用内存对其主要避免的是,本可以一次读取的变量需要两次读取。
假设一个4字节的int型变量,若存储在0x03 - 0x06地址的话,那么需要读取两次,才能取出这个值,先读取0x00-0x03这四个字节,然后再读取0x04-0x07这四个字节,这样会导致读取效率降低;若按照对齐原则,只需将其分配在0x04 - 0x07即可,一次便能够读出。

buffer overflow Usage of Windbg
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×