メモリ管理 レッスン6
メモリ安全性
バッファオーバーフロー・ダングリングポインタ・二重解放を学びましょう。
代表的なメモリ安全性の問題
C言語ではメモリ安全性はプログラマの責任です。主な問題点を理解して回避しましょう。
- バッファオーバーフロー: 配列の範囲外アクセス
- ダングリングポインタ: free後のポインタを使用
- 二重解放(double free): 同じポインタを2回free
- 未初期化メモリの読み取り: malloc後の初期化なし使用
バッファオーバーフローの防止
配列境界を常にチェックし、文字列関数は安全な版(strncpy、snprintf)を使います。
Cエディタ
ダングリングポインタの防止
free() 後はポインタを NULL に設定します。NULL チェックを守れば二重解放も防げます。
Cエディタ
安全なメモリ管理パターン
確保・使用・解放のライフサイクルを明確にし、所有権を意識した設計が重要です。
Cエディタ