最終更新日時(UTC): 2025年07月10日 01時26分30秒
Koichi Murase が更新

履歴 編集

function
<memory_resource>

# std::pmr::pool_resource::release(C++17)

    void release();

## 概要

管理中の全てのメモリを解放する。

## 効果

必要に応じて`this->upstream_resource()->deallocate()`を呼び出し、内部のメモリプール及び上流メモリリソースから割り当てた全てのメモリを解放する。
`deallocate()`によって割り当て解除されていないメモリがあったとしても、全てのメモリが解放される。

## 例

以下では`synchronized_pool_resource`で書いてあるが、`unsynchronized_pool_resource`も同様。

    #include <iostream>
    #include <memory_resource>

    int main() {

      std::pmr::synchronized_pool_resource mr{};

      //メモリを確保
      auto* p1 = mr.allocate(sizeof(int), alignof(int));
      auto* p2 = mr.allocate(sizeof(int), alignof(int));

      //解放せずにrelease
      mr.release();
      //以降、p1,p2の領域にアクセスしてはならない
    }

### 出力

## バージョン

### 言語

- C++17

### 処理系

- Clang: ??
- GCC: 9.1 ✅
- Visual C++: 2017 update 6 ✅

## 関連項目

- `memory_resource`
- `upstream_resource`

## 参照

- P0220R1 Adopt Library Fundamentals V1 TS Components for C++17 (R1)
- P0337r0 | Delete operator= for polymorphic_allocator
- Working Draft, C++ Extensions for Library Fundamentals, Version 2