想象一下这样的结构:
struct S {
__declspec(align(32)) double A[4]; // MSVC / ICL on Windows
double A[4] __attribute__((aligned(x))); // CLANG / GCC
};
该结构可以在堆栈上分配,也可以使用malloc分配,例如,结构实例本身可能不对齐。那么我们可以指望成员A是32字节对齐的吗?如果是这样,编译器该怎么做?
答案 0 :(得分:0)
至少对于MSVC,因为__declspec(align())的文档说它仅影响静态和自动对象分配,而不影响动态分配。如果要控制动态分配对齐,则需要使用提供该功能的函数,例如_aligned_malloc。