私は Windows プログラミングに不慣れで、誰もが認識しているように思われるバグを探して 2 時間を「失いました」: DLL でヒープ上にオブジェクトを作成し、別の DLL (またはメイン プログラム) でそれを破棄することはできません。 .
Linux/Unix では、これが当てはまらないことはほぼ確実です (そうである場合は、それを教えてください。ただし、何千回も問題なく実行したと確信しています...)。
この時点で、いくつか質問があります。
1) 静的にリンクされた DLL は、メイン プログラムとは異なるヒープを使用しますか?
2) 静的にリンクされた DLL は、メイン プログラムの同じプロセス空間にマップされていますか? (ここでの答えは大きな YES であると確信しています。そうでなければ、メイン プログラムの関数から DLL の関数にポインタを渡す意味がありません)。
COM/ATL サービスではなく、プレーン/通常の DLL について話している
編集:「静的にリンクされた」とは、LoadLibrary を使用して DLL をロードしないが、スタブ ライブラリとリンクすることを意味します。