<CLearn/>
メモリ管理 レッスン4

メモリリーク

リーク検出・valgrind・よくあるパターンを学びましょう。

メモリリークとは

メモリリークとは、確保したメモリを free() せずにポインタを失うことです。 プログラムが動き続けるとメモリ消費が増え続け、最終的にシステムが不安定になります。

  • 全ての malloc/calloc に対応する free が必要
  • エラーパスでも free を忘れずに
  • valgrind でリークを検出: valgrind --leak-check=full ./program
  • free 後にポインタを NULL にする習慣

リークの典型的なパターン

よくあるメモリリークのパターンと正しい書き方を比較します。

Cエディタ

エラーパスでのリーク

エラー処理でも確保済みのメモリを解放する必要があります。

Cエディタ

ループでの確保と解放

ループ内で確保する場合はループ内で必ず解放します。

Cエディタ