最終更新日時(UTC):
が更新

履歴 編集

function
<memory_resource>

std::pmr::null_memory_resource(C++17)

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

概要

メモリの確保も開放も行わないmemory_resourceを取得する。

この関数によって取得されたmemory_resourceは以下の特徴を持つ。

戻り値

静的記憶域期間に配置されているmemory_resource実装のオブジェクトへのポインタを返す。

呼び出し時は常に同じポインタを返す。

例外

投げない。

備考

この関数で取得したポインタをp、その他任意のmemory_resourceオブジェクトをrとすると、p->is_equal(r)&r == pを返す。

実装クラスの型名は未規定。

#include <iostream>
#include <memory_resource>

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

  std::cout << mr << std::endl;
  std::cout << std::pmr::null_memory_resource() << std::endl;

  try {
    auto* p = mr->allocate(sizeof(int), alignof(int));
  }
  catch (const std::exception& except) {
    //必ずここを通る
    std::cout << except.what() << std::endl;
  }
}

出力例(VS2019 Preview2)

00007FFCB3396270
00007FFCB3396270
bad allocation

バージョン

言語

  • C++17

処理系

関連項目