• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <memory_resource>

    std::pmr::polymorphic_allocator::deallocate_object

    template <class T>
    void deallocate_object(T* p, size_t n = 1);
    

    概要

    指定された個数のTのメモリ領域を解放する。

    事前条件

    pの指すn個のメモリ領域は以前に*thisの確保関数のいずれかによって確保された領域であること。
    かつ、そのメモリ領域は未解放であること。

    引数

    • p -- 解放したい領域へのポインタ
    • n -- pに確保されているTのオブジェクトの要素数

    効果

    this->deallocate_bytes(p, n*sizeof(T), alignof(T));
    

    #include <iostream>
    #include <memory_resource>
    
    int main() {
    
      constexpr int N = 10;
    
      std::pmr::polymorphic_allocator<> alloc{};
    
      //int型10個分の領域を確保
      int* p = alloc.allocate_object<int>(N);
    
      //確保した領域にintのオブジェクトを構築
      for (int i = 0; i < N; ++i) {
        alloc.construct(p+i, i);
      }
    
    
      for (int i = 0; i < N; ++i) {
        std::cout << p[i] << "\n";
      }
    
    
      //領域上のオブジェクトを破棄
      for (int i = 0; i < N; ++i) {
        alloc.destroy(p+i);
      }
    
      //確保したメモリ領域を解放
      alloc.deallocate_object(p, N);
    }
    

    出力

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    

    バージョン

    言語

    • C++20

    処理系

    関連項目

    参照