- 締切済み
メモリーリークエラーが起こる
メモリーリークエラーが起こるのですが、理由はなんなんでしょう? よく起こるのは、プログラムをコンパイルしたり実行したりしたときになるような気がするんですが、なんでリークエラーが起こるんでしょうか? 解決法とかありませんか?どなたか宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- hitomura
- ベストアンサー率48% (325/664)
回答No.1
>メモリーリークエラーが起こるのですが、理由はなんなんでしょう? メモリーリークはmalloc()やnewした領域を開放し忘れたときに発生します。 >よく起こるのは、プログラムをコンパイルしたり実行したりしたときになるような気がするんですが、なんでリークエラーが起こるんでしょうか? コンパイルのときは分かりませんが、 #つーか、リークが発生するコンパイラって何?すげー問題あるんだけど プログラム実行が終了した時には、上記のような問題のあるプログラムの場合は警告されることがあります。 サーバーのデーモンのように24時間動き続けるプログラムの場合、それとは分からずに徐々にメモリを食いつぶし、ある日突然他のプログラムがメモリ不足に陥ることになります。 >解決法とかありませんか?どなたか宜しくお願いします。 プログラムのユーザーの場合:作った人に文句をいいましょう。 プログラマの場合:確保したメモリをきちんと開放しているか全ての経路でチェックしましょう。 C++の場合、STLを使う、メモリ確保が必要なデータをクラスでラップし、デストラクタで開放するなどの方法が有効です。
お礼
お返事ありがとうございました。 >メモリーリークはmalloc()やnewした領域を開放し忘 >れたときに発生します。 やっぱり普通はそうですよね。でも、malloc()などは使っていないんですよ。 何でか不思議です。 コンパイラはC++builderを使っているんですが。不思議です。 コンパイルしたときに間違いがありエラーとなったときにたまに出るんです。エラー部分を直しもう一度コンパイルしてもまたエラーが出て、どこが間違ってるんだー?と見直しても解からず、ソースを念のためメモ帳か何かにコピーしておいてから、C++builderを閉じてもう一度立ち上げてやってみようと、閉じると「メモリーを○回開放し忘れています」と出るんです。 で、再起動してもう一度C++ビルダーを開いて、さっきコピーしてとっておいたソースを貼り付けると、さっきはどこがおかしいのかわからないがエラーが出て続けていたソースが、何の問題も無くコンパイルされ実行すると、ちゃんとできるんです。 何でこんなことが起こるのかわかりません。インストール時何か問題があったんですかね?