3

20.6.11 临时缓冲区 [temporary.buffer] 定义了两个函数模板:

template<class T> pair<T*, ptrdiff_t> get_temporary_buffer(ptrdiff_t n) noexcept;

template<class T> void return_temporary_buffer(T* p);

C标准中有类似的东西吗?就像是:

void * get_temporary_buffer(size_t);

void return_temporary_buffer(void *);

不,malloc/free不算作答案;)

4

2 回答 2

2

C标准中没有类似的东西。该标准对 get_temporary_buffer 进行了说明:

Obtains a pointer to storage sufficient to store up to n adjacent T objects.

即你不能保证得到你要求的空间。今天的大多数 C++ 标准库实现都将 get_temporary_buffer() 实现为简单的基于 new 的内存分配,如果它失败,则以越来越小的分配大小重复。在 C 中实现具有相同效果的东西并不难。

于 2012-10-10T05:14:25.070 回答
0

正如在http://en.wikipedia.org/wiki/C_dynamic_memory_allocation中提到的,实现部分列出了许多基于 C 的动态内存分配实现,这可以看作是 C++ get_temporary_buffer 的替代方案吗?

于 2012-10-10T05:16:10.053 回答