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
不算作答案;)
答案 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的替代方案吗?