最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<memory_resource>

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

    void do_deallocate(void* p, std::size_t bytes, std::size_t alignment) override;

## 概要

`do_allocate`によって割り当てたメモリ領域を解放（割り当て解除）する。

要件等は`memory_resource::do_deallocate()`に従う。

## 要件

`p`の指すサイズ`bytes`のメモリ領域は、`this->do_allocate(bytes, alignment)`によって事前に確保された領域であること。
かつ、そのメモリ領域は未解放であること。

## 引数

- `p` -- 解放する領域へのポインタ
- `bytes` -- `p`の領域のサイズ
- `alignment` -- `p`割り当て時のアライメント要求

## 効果

指定されたメモリ領域を内部プールへ返却する。
ただし、`this->upstream_resource()->deallocate()`が呼ばれるかどうか、またはどのような状況で`this->upstream_resource()->deallocate()`が呼ばれるかは未規定。

## 例外

投げない。

## バージョン

### 言語

- C++17

### 処理系

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

## 関連項目

- `pool_options`
- `memory_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