C11标准添加了aligned_alloc
函数,以分配未初始化的对齐内存。该标准还包括calloc
函数以分配已初始化为零的内存,但仅将其与最大类型的大小对齐。]
为什么C11标准不包含分配初始化为零的对齐内存的aligned_calloc
函数?
[我知道您可以只设置结果以获取初始化的内存,但是calloc
函数在某些操作系统上非常有用,因为出于安全原因,内核提供的内存通常必须已经初始化为零(并与页面大小对齐)。 。calloc
可以利用它,避免重复初始化。
另外,某些操作系统(如linux)以写时复制的方式提供内存,与calloc
一起可以构造原始的稀疏数据结构。在aligned_alloc
的结果上初始化内存集会破坏此属性。
在我看来,这些优点虽然不可移植,但足以具有第二个统一的分配功能。
C11标准添加了aligned_alloc函数来分配未初始化的对齐内存。该标准还包括calloc函数,用于分配已初始化为零但仅...
我能提供的最佳猜测是,aligned_calloc专门违反了C1X章程的明确目标之一: