2012-04-30 1 views
2

私のアプリケーションはメモリを消費しますが、それは漏れません。分析中に私は割り当てられたメモリの大部分がgetcfprintfから来て、malloc(16kb)を呼び出すことを発見しました。私はそれらの関数がヒープ上にメモリを割り当てることを知らなかったのですか?特にfprintf?どうすればそれを解放できますか?OS Xでgetcとfprintfによって16 KBが割り当てられました

+3

毎回または1回だけ割り当てますか?後者の場合、たぶんそれは彼らが彼らの義務を果たすために使うバッファです。それを心配しないで、16 KBは「普通の」PCでは何もありません。 –

+0

これは何度も呼び出されますが、valgrindの呼び出しグラフを見ると、getcとfprintfに関連する関数を呼び出すたびに16KBが1ブロックに割り当てられます(16kb *多くの呼び出し)== lotsメモリの。それがバッファーの場合、どうすれば解放できますか? – Ynv

+1

本当に、あなたのメモリのうち_most_は 'getc'と' fprintf'から来ていますか? – sarnold

答えて

0

ストリームを閉じる前にストリームでfflushを呼び出すのを忘れました...(私の設定では、ストリームがまだキャンセルされたスレッドによってブロックされているため、ストリームを消去できません)。ご協力いただきありがとうございます!