为什么C11中没有对齐的calloc

问题描述 投票:17回答:1

C11标准添加了aligned_alloc函数,以分配未初始化的对齐内存。该标准还包括calloc函数以分配已初始化为零的内存,但仅将其与最大类型的大小对齐。]

为什么C11标准不包含分配初始化为零的对齐内存的aligned_calloc函数?

[我知道您可以只设置结果以获取初始化的内存,但是calloc函数在某些操作系统上非常有用,因为出于安全原因,内核提供的内存通常必须已经初始化为零(并与页面大小对齐)。 。calloc可以利用它,避免重复初始化。

另外,某些操作系统(如linux)以写时复制的方式提供内存,与calloc一起可以构造原始的稀疏数据结构。在aligned_alloc的结果上初始化内存集会破坏此属性。

在我看来,这些优点虽然不可移植,但足以具有第二个统一的分配功能。

C11标准添加了aligned_alloc函数来分配未初始化的对齐内存。该标准还包括calloc函数,用于分配已初始化为零但仅...

c dynamic-memory-allocation memory-alignment c11 calloc
1个回答
9
投票

我能提供的最佳猜测是,aligned_calloc专门违反了C1X章程的明确目标之一:

© www.soinside.com 2019 - 2024. All rights reserved.