Skip to content

Latest commit

 

History

History
87 lines (65 loc) · 2.55 KB

set_default_resource.md

File metadata and controls

87 lines (65 loc) · 2.55 KB

set_default_resource

  • memory_resource[meta header]
  • std::pmr[meta namespace]
  • function[meta id-type]
  • cpp17[meta cpp]
namespace std::pmr {
  memory_resource* set_default_resource(memory_resource* r) noexcept;
}

概要

polymorphic_allocatorのコンストラクタ等で、memory_resourceが指定されない場合に利用されるデフォルトのmemory_resourceを設定する。

引数

  • r -- 設定するmemory_resourceのポインタ

効果

rがnullでなければ、デフォルトのmemory_resourceのポインタをrに設定する。

rがnullならば、デフォルトのmemory_resourceのポインタをnew_delete_resource()に設定する。

スレッドセーフ

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

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

戻り値

以前に設定されていたデフォルトのmemory_resourceのポインタ。

例外

投げない。

備考

この関数は受け取るmemory_resourceの所有権を保持しない。 そのため、設定するmemory_resourceオブジェクトの寿命には注意する必要がある。

#include <iostream>
#include <memory_resource>

int main()
{
  auto* mr = std::pmr::get_default_resource();

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

  //monotonic_buffer_resourceを設定
  std::pmr::monotonic_buffer_resource mono_mr{};
  auto* befor_mr = std::pmr::set_default_resource(&mono_mr);

  std::cout << (mr == std::pmr::get_default_resource()) << std::endl;
  std::cout << (mr == befor_mr) << std::endl;
}
  • set_default_resource[color ff0000]
  • get_default_resource[link get_default_resource.md]
  • new_delete_resource[link new_delete_resource.md]
  • monotonic_buffer_resource[link monotonic_buffer_resource.md]

出力

true
false
true

バージョン

言語

  • C++17

処理系

関連項目

参照