分配函数和返回的指针

时间:2014-07-18 18:20:29

标签: c++ c pointers memory-management

我不理解 合适的 指针对齐概念:

  

对分配的存储的内容没有限制   从分配函数返回。顺序,连续性和   连续调用分配的存储初始值   分配功能未指定。返回的指针应该是    适当对齐 ,以便可以将其转换为任意指针   具有基本对齐要求的完整对象类型(3.11)   然后用于访问分配的存储中的对象或数组   (直到通过调用a显式释放存储空间为止   相应的解除分配功能)。

sec.3.11 中没有合适对齐的定义。你解释一下应该是什么意思?

3 个答案:

答案 0 :(得分:3)

§3.11/ 1说,

  

对象类型具有对齐要求(3.9.1,3.9.2),这些要求对地址设置了限制   可以分配该类型的对象。

因此,如果指针“适当对齐”,则意味着指针所代表的地址满足这些限制。这对于地址的数值究竟意味着什么是实现定义的。

答案 1 :(得分:3)

这意味着对于具有基本对齐的任何完整对象类型,应该可以将返回的指针转换为指向该对象类型的指针,并遵循该对象类型的对齐要求。

实际上,由于对齐是2的幂,这意味着需要分配函数来返回与alignof(std::max_align_t)对齐的指针。

没有单独的定义"合适的对齐&#34 ;;在本段中和其他地方一样#34;适当地"只是意味着要求程序满足该段其余部分的要求。

答案 2 :(得分:2)

对齐由操作系统和平台定义。通常它是最大基本类型(指针或double)的大小,但它可能更多。例如,在Windows上,x86是8字节,x64是16字节。