如何对齐类似于__declspec(align(#))的堆上分配的对象?这包括数组,因此不能仅将对齐方式添加到类中
class SomeClass
{
//Something
}
//Somewhere
a = new SomeClass[20] //aligned to 64 bytes
答案 0 :(得分:0)
__ declspec(align())仅适用于具有静态生存期的对象,如果您需要的对齐方式大于new所提供的对齐方式,则必须使用可以处理此问题的专用分配器(例如,使用_aligned_malloc或VirtualAlloc)。
_aligned_malloc允许您指定所需的对齐方式,而VirtualAlloc使用系统分配粒度(在我所知道的所有版本的Windows上都是64k,与大多数分配相比,它肯定是一个很大的值)。