━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
C言語によるメモリ管理
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●メモリの動的管理の注意点

領域確保の失敗
        メモリ割り付け関数 malloc(), calloc() は領域確保に失敗する場合がある
        ・malloc(), calloc() の戻り値が NULL の場合にエラー処理

確保領域の未初期化
        malloc() による確保領域が初期化されない
        ・データ構造の生成関数中で各領域(構造体メンバや配列要素など)を初期化
        ・malloc() の直後に memset() を使い,確保領域全体を適切に初期化
        ・calloc() を malloc() の代わりに使い,確保領域全体を 0 で埋める

解放済み領域の参照
        ポインタが NULL でなければメモリ解放後も指し先を読み書きできてしまう
        ・使用前のポインタに NULL を設定
        ・ポインタが NULL かを検査してから指し先を参照
        ・メモリ解放後の不要なポインタに NULL を設定

確保領域の多重解放
        同じ確保領域を複数回解放できてしまう
        ・確保領域を走査しながら解放するときの順序に注意
        ・複数のポインタで参照する確保領域が重なるときの解放に注意

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
演習のホームページ

山田 俊行
https://www.cs.info.mie-u.ac.jp/~toshi/