# std::return_temporary_buffer

< cpp‎ | memory

定义于头文件 `<memory>` |  |
template< class T > void return_temporary_buffer( T* p ); |  | (C++17 中弃用) (C++20 中移除)

解分配先前以 std::get_temporary_buffer 分配的存储。

### 参数

p | - | 指向先前由 std::get_temporary_buffer 分配的存储，且未被之前到 `return_temporary_buffer` 的调用非法化的指针

### 返回值

（无）

### 异常

不抛出。

### 示例

    #include <algorithm>
    #include <iostream>
    #include <memory>
    #include <string>
    #include <iterator>

    int main()
    {
        const std::string s[] = {"string", "1", "test", "..."};
        const auto p = std::get_temporary_buffer<std::string>(4);
        // 要求将 p.first 传递给 return_temporary_buffer
        // （当心提前退出和异常）

        std::copy(s, s + p.second,
                  std::raw_storage_iterator<std::string*, std::string>(p.first));
        // 要求单独销毁每个 p 中的 string
        // （当心提前退出和异常）

        std::copy(p.first, p.first + p.second,
                  std::ostream_iterator<std::string>{std::cout, "\n"});

        std::for_each(p.first, p.first + p.second, [](std::string& e) {
            e.~basic_string<char>();
        });

        std::return_temporary_buffer(p.first);
    }

输出：

    string
    1
    test
    ...

### 参阅

get_temporary_buffer (C++17 中弃用)(C++20 中移除) | 获得未初始化存储 (函数模板)