C++指针的适当对齐方式

C++ pointer's suitable alignment

本文关键字:对齐 方式 指针 C++      更新时间:2023-10-16

[basic.stc.dynamic.allocation]/2 关于分配函数:

返回的指针应适当对齐,以便可以 转换为具有基本 对齐要求(3.11(,然后用于访问对象或 阵列在分配的存储中(直到显式存储 通过调用相应的释放函数来解除分配(。

有点不清楚。我认为任何指向(包括void*(类型的指针的对齐方式都等于 8。返回的指针应适当对齐的要点是什么...?你能得到一个没有合适的对齐指针的例子吗?

许多系统要求取消引用的指针对齐为类型大小的倍数。例如,shorts的指针是 2 个字节的倍数,char指针是不受限制的,等等。并非所有系统都有此要求,但是在这些系统上访问未对齐的内存通常非常慢,因此通常程序员无论如何都会尝试保持所有内容对齐。

如果你想在你的系统上四处逛逛,你可以找到带有alignof的类型的对齐要求。对于任何类型,未正确对齐的指针可能是类似 0xFFFF0002 的指针,对于任何 4 字节或更高类型,它都不会对齐。

简而言之,该文档所说的是,返回的内存将针对任何基本类型对齐。