【问题标题】:C equivalent to C++ get_temporary_buffer?C相当于C++ get_temporary_buffer?
【发布时间】:2012-09-30 12:12:13
【问题描述】:

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

【问题讨论】:

    标签: c++ c memory buffer temporary


    【解决方案1】:

    C 标准中没有类似的东西。标准中关于 get_temporary_buffer 的说明如下:

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

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

    【讨论】:

    • 哦。不知何故,我认为与 operator newmalloc 相比,它会更专业且超快。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2011-08-27
      相关资源
      最近更新 更多