- memory_resource[meta header]
- function[meta id-type]
- std::pmr[meta namespace]
- pool_resource[meta class]
- cpp17[meta cpp]
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の領域にアクセスしてはならない
}- release[color ff0000]
- allocate[link /reference/memory_resource/memory_resource/allocate.md]
- synchronized_pool_resource[link /reference/memory_resource/pool_resource.md]
- C++17
- Clang: ??
- GCC: 9.1 [mark verified]
- Visual C++: 2017 update 6 [mark verified]