DLLから割り当てられたメモリを削除します。/MDdのDLLメモリを/ MD Exeファイルから削除すると、ヒープの破損が発生する
Iテスト..
- エグゼ:/ MD、DLL:/ MDD => HeapCorruption。
- exe:/ MD、DLL:/ MD =>私が見る限り、仕事の井戸です。
でもLocalAllocは同じ結果になります...
限り、私が知っているように、マルチスレッドDLLのCRTは同じヒープメモリを使用しています。 ケース1テストが常にヒープ破損している理由を教えてください。
とどのように修正できますか?
- 追加。
ofcourse割り当て/削除を同じ場所で制限するのが最適です。
しかし、私のprobは.. です。サイズは最初にexeファイルから見ることができますが、dllは出力パラメータでメモリを使用する必要があります。 - サイズを照会してからバッファを取得するのが目的ではない(dllユーザにとって複雑すぎる)
デバッグとリリースをミックスしていますか? '/ MDd'はデバッグに使用されます。 '/ MD'をリリースしました。デバッグとリリースを混在させると、デバッグヒープがリリースヒープと互換性がないため、ヒープが破損する可能性が高くなります。 – drescherjm
デバッグCRTは異なるアロケータを使用しているため、優れた診断機能を提供します。 2012年以前のVSバージョンでは独自のヒープが作成されました。確かに、これはすべてうまくいっていないはずです。あなたはこれらの問題を強く避けることができます。両方のプロジェクトを持つVSでソリューションを作成できます。これらのプロジェクトを同期させて簡単に構築し、テストすることが簡単にできます。それを利用しないことは大きな間違いです。 –