私はC++で書いたDLLを持っています。 ただし、GlobalAlloc()を使用してメモリを割り当てます。メモリリークを避けるために、私はこれらの割り当てを追跡し、DLLの破棄時にそれらの割り当てをすべて解除する必要があります。C++ DLLアンロードデストラクタ?
私のDLLがアンロードされたときに呼び出される関数を書く方法はありますか? 私が考えることができることの1つは、DLL内にグローバルオブジェクトを作成し、デストラクタにメモリフリーコールを書き込むことですが、これは過度のようです。 私の他のアイデアは、DLLがアンロードされるときにメモリを解放するためにオペレーティングシステムに依存することですが、これは汚れているようです。
ありがとうございました
メモリは、LPCSTR GetCSV()関数が呼び出されたときに割り当てられます。基本的には、ローカルの標準文字列のメモリをメモリにコピーしています。私はGlobalAlloc()を使用して割り当てます。関数が返ってから呼び出し元がメモリにアクセスできるようにします。 GetCSV()への古い呼び出しからメモリをクリーンアップするコードをいくつか追加しましたが、DLLがアンロードされたときの最終的なケースは処理されません。これは明らかに自動的に行われます。この[記事](http://blogs.msdn.com/b/oldnewthing/archive/2012/01/05/10253268.aspx)(回答者によってリンクされています)、本当にいいです。 – Amil