【发布时间】:2019-03-05 23:03:59
【问题描述】:
想象一下这样的结构:
struct S {
__declspec(align(32)) double A[4]; // MSVC / ICL on Windows
double A[4] __attribute__((aligned(x))); // CLANG / GCC
};
结构可以在堆栈上分配,也可以使用 malloc 分配,无论哪种方式,结构实例本身都可能不对齐。那么我们可以指望成员 A 是 32 字节对齐的吗?如果是这样,编译器是如何做到的?
【问题讨论】:
-
寻找
alignas。 -
谢谢,那个可以吗?你能详细说明一下吗?我的意思是我假设编译器可以分配“最坏情况”,然后在使用时对齐指针,但是如果你要 memcpy 结构,你就会遇到问题......
标签: c++ visual-c++ alignment memory-alignment