通常情况下,数据的对齐方式与其大小有关,会对齐到二的幂次方地址。
那么对于一个大小为20字节或其他非二的幂次方大小的结构体或类应该如何对齐呢?
我正在创建一个自定义堆栈分配器,因此我想编译器不会为我对齐数据,因为我正在使用连续的内存块进行操作。
一些更多的背景信息:
我有一个分配器类,它使用malloc()来分配大量数据。然后我使用void* allocate(U32 size_of_object)方法来返回指针,以便我可以存储需要存储的对象。这样,所有对象都存储在同一个内存区域中,希望能够适合缓存,减少缓存未命中。
那么对于一个大小为20字节或其他非二的幂次方大小的结构体或类应该如何对齐呢?
我正在创建一个自定义堆栈分配器,因此我想编译器不会为我对齐数据,因为我正在使用连续的内存块进行操作。
一些更多的背景信息:
我有一个分配器类,它使用malloc()来分配大量数据。然后我使用void* allocate(U32 size_of_object)方法来返回指针,以便我可以存储需要存储的对象。这样,所有对象都存储在同一个内存区域中,希望能够适合缓存,减少缓存未命中。
SSE
指令或具有对齐限制的东西吗? - Darren Engwirda