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

履歴 編集

function
<cstdlib>

std::free

namespace std {
  void free(void* ptr) noexcept;
}

概要

malloccallocaligned_allocreallocで確保されたメモリ領域を解放する。

解放済みのポインタを再度 free に渡したり、アクセスしたりするときの動作は未定義となる。

ポインタがnullptrの場合、この関数は何も実行しない。

解放されたポインタに再びアクセスする場合、未定義動作を引き起こす恐れがある。

備考

この関数はスレッドセーフである。

実装例

#include <cstdlib>

int main()
{
  int *p1 = std::malloc(10 * sizeof *p1);
  std::free(p1); // p1のメモリを解放

  int *p2 = std::calloc(10, sizeof *p2);
  int *p3 = std::realloc(p2, 1000 * sizeof *p3);
  if (p3) 
    std::free(p3); // realloc により新しい領域が確保された場合、それを解放
  else
    std::free(p2); // realloc が失敗した場合は元の領域を解放
}

出力


関連項目

  • aligned_alloc:指定したアライメントでメモリを確保する
  • malloc:メモリを確保する
  • calloc:メモリを確保する(0で初期化する)
  • realloc:メモリを再確保する