Skip to content

Latest commit

 

History

History
89 lines (71 loc) · 2.81 KB

File metadata and controls

89 lines (71 loc) · 2.81 KB

destroy

  • memory_resource[meta header]
  • function template[meta id-type]
  • std::pmr[meta namespace]
  • polymorphic_allocator[meta class]
  • cpp17[meta cpp]
template <class T>
void destroy(T* p);

概要

指定された領域にあるTのオブジェクトを破棄する。

引数

  • p -- 対象となるオブジェクトが構築されているメモリへのポインタ

効果

あたかもp->~T()を実行したように、pの指すTのオブジェクトを破棄する。

メモリ領域の解放は行われないため、別にdeallocateで行う必要がある。

#include <iostream>
#include <memory_resource>

int main()
{
  std::pmr::polymorphic_allocator<int> alloc{};

  //メモリの確保
  int* array = alloc.allocate(4);

  //要素を構築
  for (int i = 0; i < 4; ++i) {
    alloc.construct(array + i, i);
  }

  for (int i = 0; i < 4; ++i) {
    std::cout << array[i] << std::endl;
  }

  //要素を破棄
  for (int i = 0; i < 4; ++i) {
    alloc.destroy(array + i);
  }

  //メモリの解放
  alloc.deallocate(array, 4);
}
  • destroy[color ff0000]
  • allocate[link allocate.md]
  • construct[link construct.md]
  • deallocate[link deallocate.md]

出力

0
1
2
3

バージョン

言語

  • C++17

処理系

  • Clang: ??
  • GCC: 9.1 [mark verified]
  • Visual C++: ??
    • 2017, 2019共にこの関数は実装されなかった

関連項目

参照