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

履歴 編集

function
<memory_resource>

std::pmr::polymorphic_allocator::deallocate_object(C++20)

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

処理系

関連項目

参照