メモリリークとは

Memory leak
leak:漏れ
( 直訳するとメモリ漏れ。メモリ漏れだと意味がよく分からんので、メモリ解放漏れと意訳 )

 

プログラムが確保したメモリ領域を解放するのを忘れ、
放置したままになってしまうこと。

メモリの空き領域が減っていき、不具合をまねく。

 

メモリリークが頻発すると、
・メモリの空き領域が減少。
・実行中のプログラムが必要なメモリ領域を確保できず、停止・異常終了。
・OS 自体の動作が停止することもある。

 

なお、参照されなくなったメモリ領域を自動的に解放する、
ガーベジコレクションという機能がある。
これにより、プログラマが明示的に解放処理コードを記述しなくとも
使用されなくなった領域をある程度は自動的に解放される。

 

プログラムとメモリ

1 ) メモリ ( 領域 ) の確保

 プログラムがメモリを使用する時、まずは場所取りをする。
( 自分が使うので他のプログラムは使うな、と宣言 )

変数などを宣言・ new した時に確保 ( 多分 ) 。 new は確保 かつ インスタンス生成 ( 多分 )。

 

2 ) 確保したメモリ領域を使って作業

何かしらのデータを保存したり、処理実行したりなど。

 

3 ) メモリ ( 領域 ) の解放

作業が終わったならば、後片付け。
( メモリ上からデータなどを削除して場所を空けた、と宣言 )

C# なら Dispose ( リソースの解放 ) 。C なら free 。

 

この 3 )  が実行されずにメモリ領域が使用中となる。
これが頻発すると使える場所が減っていく。

 

 バグか現象か

メモリリークは、バグだという説明 or 現象だという説明があるが
気にしないで OK 。

メモリリークとは、
メモリの解放処理が入っていないのが原因で、
確保されたメモリ領域が放置されたままになり、
メモリの空き領域が減っていく現象。

解放処理が入っていない、に注目すればバグで
空き領域が減っていく、に注目すれば現象といえる。

 

 

こちらから。
http://wa3.i-3-i.info/word16066.html
http://e-words.jp/w/%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%AF.html

 

以上。