参考this question and answer Memory alignment : how to use alignof / alignas?“对齐是对可以存储值的第一个字节的内存位置的限制。” C++ 中是否有一种可移植的方法来找出指令不出错所需的最高对齐粒度(例如在 ARM 中)?alignof(intmax_t)
因为它是最大的整数原始类型就足够了吗?
此外,malloc 中的某些内容如何将数据与结构的边界对齐?例如,如果我有这样的结构
alignas(16) struct SomethingElse { ... };
该SomethingElse
结构需要与 16 字节的倍数的边界对齐。现在,如果我像这样从 malloc 请求结构的内存
SomethingElse* ptr = malloc(sizeof(SomethingElse));
那么当 malloc 返回一个指向类似地址的指针时会发生什么40
?这是无效的,因为指向SomethingElse
对象的指针必须是 16 的倍数?