2
私のアプリケーションはメモリを消費しますが、それは漏れません。分析中に私は割り当てられたメモリの大部分がgetc
とfprintf
から来て、malloc
(16kb)を呼び出すことを発見しました。私はそれらの関数がヒープ上にメモリを割り当てることを知らなかったのですか?特にfprintf
?どうすればそれを解放できますか?OS Xでgetcとfprintfによって16 KBが割り当てられました
私のアプリケーションはメモリを消費しますが、それは漏れません。分析中に私は割り当てられたメモリの大部分がgetc
とfprintf
から来て、malloc
(16kb)を呼び出すことを発見しました。私はそれらの関数がヒープ上にメモリを割り当てることを知らなかったのですか?特にfprintf
?どうすればそれを解放できますか?OS Xでgetcとfprintfによって16 KBが割り当てられました
ストリームを閉じる前にストリームでfflushを呼び出すのを忘れました...(私の設定では、ストリームがまだキャンセルされたスレッドによってブロックされているため、ストリームを消去できません)。ご協力いただきありがとうございます!
毎回または1回だけ割り当てますか?後者の場合、たぶんそれは彼らが彼らの義務を果たすために使うバッファです。それを心配しないで、16 KBは「普通の」PCでは何もありません。 –
これは何度も呼び出されますが、valgrindの呼び出しグラフを見ると、getcとfprintfに関連する関数を呼び出すたびに16KBが1ブロックに割り当てられます(16kb *多くの呼び出し)== lotsメモリの。それがバッファーの場合、どうすれば解放できますか? – Ynv
本当に、あなたのメモリのうち_most_は 'getc'と' fprintf'から来ていますか? – sarnold