最終更新日時(UTC): 2025年07月10日 01時57分11秒
Koichi Murase が更新

履歴 編集

function
<cstdlib>

# std::free

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

## 概要

`malloc`、`calloc`、`aligned_alloc`、`realloc`で確保されたメモリ領域を解放する。

解放済みのポインタを再度 `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`:メモリを再確保する