我正在使用游戏引擎架构这本书来开发一个内存管理器。
目前我正在阅读关于内存对齐的内容(在书和网上),但不确定如何正确地为类使用对齐。我理解内存对齐的概念(例如,4字节数据块应位于以0x0、0x4、0x8或0xC结尾的地址上),但是在书中的
allocateAligned()
函数中有一条注释说对齐必须为2的幂次方。如果我有一个包含两个int
和一个char
的类,sizeof(class)
告诉我,该类大小为12字节。那么,你会把32作为对齐方式来传递吗?这不是浪费内存并可能导致碎片化吗?我的问题是,如何正确地对齐类,你能详细地解释一下吗(如果你想对更大的数据块进行对齐会发生什么),并且对于较大的数据块进行对齐是否有意义(因为处理器一次只获取8个字节,如果我没记错的话)?