next up previous contents
Next: メモリの確保 Up: c Previous: ユークリッドの互除法   Contents

C言語プログラミング上級編3
- メモリ管理 -

メモリ管理とは、メモリの確保、開放を意味する。 自動変数は計算機自身が自動的にメモリ確保開放を行っているので、 プログラム作成者が特別に管理を行う必要性はない。 C言語では、必要なときに必要な分だけの メモリを確保することができる機能が備わっている。 動的にメモリが確保できることは、数が分かっていないデータに対しは、 数が判明するまで、予めメモリを確保しておく必要がないということである。 しかしながら、必要がなくなったらメモリを開放するといった作業を怠ると、 別の機会に必要となったメモリを確保できないといった問題が生じる場合がある。 すなわち、プログラム作成者自らが動的に確保するメモリに対しては、 プログラム作成者自身がメモリ管理する必要がある。

一般的に メモリ管理は難しく、バグの温床になりやすい機能である。 なぜなら、メモリを動的に確保し、 正しくメモリにアクセスしている内はプログラムは正しく動くが、 一度間違ったメモリにアクセスし書き込みなどを行うと、 その後プログラムが正常に動くかどうかは保証されず、また、 いつプログラムが異常終了するか分からない、さらに、 異常終了した場合でも異常終了した個所近辺にソースコード上のバグが存在するとは 限らない、といった事情があるためである。

このように、管理が難しい機能ではあるが、 いろいろな局面で使用することにより、恩恵を享受できる機能であるので、 使用できるようになるのが望ましい。

メモリ関係のデバックには、デバッカを使用するのが通常である。 何故なら、メモリの状態は実行中にしか分からないためである。 デバッカ上でプログラムを動かせば、仮にプログラムが異常終了したとしても、 どの関数において、どの変数を参照して異常終了したかを調べることが可能である。



Subsections

kojima hirohisa
2001-03-05