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 ✅