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

履歴 編集

function
<memory_resource>

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

    void release();

## 概要

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

## 効果

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

コンストラクタから設定された初期メモリ領域の解放は行われない。

## 例

    #include <iostream>
    #include <memory_resource>

    int main() {

      std::pmr::monotonic_buffer_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