- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メモリリーク)
VC++ 2010 SP1 MFC使用環境でのメモリリーク
このQ&Aのポイント
- VC++ 2010 SP1 MFC使用環境でのプログラム内でメモリリークが発生しているか疑問です。関数内で複数回 ::SysAllocString() を実行し、::SysFreeString() を呼び出さなくてもメモリリークは発生しないようですが、本当に呼び出さなくて良いのでしょうか?
- VC++ 2010 SP1 MFC使用環境でのプログラム内でのメモリリークについての疑問です。::SysAllocString() 関数を複数回実行しても、::SysFreeString() を呼び出さない場合でもリークが発生しないのか確認しましたが、メモリリークは見つかりませんでした。::SysFreeString() 関数はどのような場合に必要なのでしょうか?
- VC++ 2010 SP1 MFC使用環境でのプログラム内でのメモリリークについての疑問です。::SysAllocString() 関数を複数回実行した場合、::SysFreeString() 関数を呼び出さないとメモリリークが発生するのか確認しましたが、リークは発生しませんでした。正確なメモリ管理の方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
COM関連はよくわかりませんが(私自身使う事ないので)、SysFreeStringの呼び出しはおそらく必要です。 >出力Windowにはメモリリークは出ていないように感じます その出力で検知されているメモリリークはmallocやnewなどを用いたものの場合だと思います。 >仮に今回は必要ないにしても関数自体が存在するということは必要性はあると思うのですがどういったときにコールする必要があるのでしょう この辺が参考になるのではないでしょうか。 http://msdn.microsoft.com/ja-jp/library/vstudio/xda6xzx7.aspx
お礼
>その出力で検知されているメモリリークはmallocやnewなどを用いたものの場合だと思います。 なるほど そういったことなら納得です なんでサンプルで開放してないのかがいまいちよくわかりませんが (例え単発で関数1度動いたらプログラム終了してもリークしますよね?) 解放関数自体コールしても動き的には問題なさそうなので呼んでおくようにします 回答ありがとうございました