Skip to content

Latest commit

 

History

History
76 lines (59 loc) · 1.94 KB

null_memory_resource.md

File metadata and controls

76 lines (59 loc) · 1.94 KB

null_memory_resource

  • memory_resource[meta header]
  • std::pmr[meta namespace]
  • function[meta id-type]
  • cpp17[meta cpp]
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;
  }
}
  • null_memory_resource[color ff0000]
  • polymorphic_allocator[link polymorphic_allocator.md]

出力例(VS2019 Preview2)

00007FFCB3396270
00007FFCB3396270
bad allocation

バージョン

言語

  • C++17

処理系

関連項目