C相当于C ++ get_temporary_buffer?

时间:2012-10-10 05:07:25

标签: c++ c memory buffer temporary

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不算作答案;)

2 个答案:

答案 0 :(得分:2)

C标准中没有类似的东西。标准说明了这个关于get_temporary_buffer:

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

即。您无法保证获得您要求的空间。今天大多数C ++标准库实现都将get_temporary_buffer()实现为一个简单的基于新的内存分配,如果失败,则会以较小和较小的分配大小重复。在C中实现具有相同效果的东西并不难。

答案 1 :(得分:0)

http://en.wikipedia.org/wiki/C_dynamic_memory_allocation所述,实现部分列出了很多基于C的动态内存分配实现,可以看作是C ++ get_temporary_buffer的替代方案吗?