Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::pmr::null_memory_resource

      From cppreference.com
      <cpp‎ |memory
       
       
      Memory management library
      (exposition only*)
      Allocators
      Uninitialized memory algorithms
      Constrained uninitialized memory algorithms
      Memory resources
      Uninitialized storage(until C++20)
      (until C++20*)
      (until C++20*)
      Garbage collector support(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
       
      Defined in header<memory_resource>
      std::pmr::memory_resource* null_memory_resource()noexcept;
      (since C++17)

      Returns a pointer to amemory_resource that doesn't perform any allocation.

      [edit] Return value

      Returns a pointerp to a static storage duration object of a type derived fromstd::pmr::memory_resource, with the following properties:

      • itsallocate() function always throwsstd::bad_alloc;
      • itsdeallocate() function has no effect;
      • for anymemory_resourcer,p->is_equal(r) returns&r== p.

      The same value is returned every time this function is called.

      [edit]Example

      The program demos the main usage ofnull_memory_resource: ensure that a memory pool which requires memory allocated on the stack will NOT allocate memory on the heap if it needs more memory.

      Run this code
      #include <array>#include <cstddef>#include <iostream>#include <memory_resource>#include <string>#include <unordered_map> int main(){// allocate memory on the stackstd::array<std::byte,20000> buf; // without fallback memory allocation on heapstd::pmr::monotonic_buffer_resource pool{buf.data(), buf.size(),                                             std::pmr::null_memory_resource()}; // allocate too much memorystd::pmr::unordered_map<long,std::pmr::string> coll{&pool};try{for(std::size_t i=0; i< buf.size();++i){            coll.emplace(i,"just a string with number "+std::to_string(i)); if(i&& i%50==0)std::clog<<"size: "<< i<<"...\n";}}catch(conststd::bad_alloc& e){std::cerr<< e.what()<<'\n';} std::cout<<"size: "<< coll.size()<<'\n';}

      Possible output:

      size: 50...size: 100...size: 150...std::bad_allocsize: 183
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/null_memory_resource&oldid=153366"

      [8]ページ先頭

      ©2009-2025 Movatter.jp