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

履歴 編集

function
<memory_resource>

# std::pmr::get_default_resource(C++17)

    namespace std::pmr {
      memory_resource* get_default_resource() noexcept;
    }

## 概要

標準コンテナ等で、`polymorphic_allocator`を使用するが`memory_resource`が指定されない場合に利用されるデフォルトの`memory_resource`のポインタを取得する。

## スレッドセーフ

この関数はスレッドセーフである。

`set_default_resource()`の呼び出しと、後続の`set_default_resource()`もしくはこの関数の呼び出しは同期的に実行される。
すなわち、この関数と`set_default_resource()`の呼び出しはデータ競合を起こさない。

## 戻り値

現在設定されているデフォルトの`memory_resource`のポインタ。

`set_default_resource`によって何も設定されていない場合、`new_delete_resource()`を返す。

## 例外

投げない。

## 例

    #include <iostream>
    #include <memory_resource>

    int main()
    {
      auto* mr = std::pmr::get_default_resource();
      std::pmr::polymorphic_allocator<int> alloc(mr);

      std::cout << std::boolalpha;
      std::cout << (mr == std::pmr::new_delete_resource()) << std::endl;
    }

### 出力

    true

## バージョン

### 言語

- C++17

### 処理系

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

## 関連項目

- `memory_resource`