MSVCRT:メモリの使用量はワイルドになりますが、デバッガーの下ではありません
-
03-10-2019 - |
質問
MS VC6モードのIntelコンパイラ32ビットとコンパイルされたC ++コードがあるため、MSVCRT.DLLまたはMSVCRTD.DLLのいずれかを使用しています。このプロセスは、メモリの割り当てと契約を重いものにします。 WMIでメモリ使用量を監視し、仮想サイズとWorkingSetsizeを調べます。
Debug Runtime(MSVCRTD.DLL):仮想定数1.7GB、1.2GBの動作
非障害ランタイム(msvcrt.dll)で: 仮想上昇1.7--2.1GB, 、1.2-1.4GBの調達作業
非障害のあるランタイムがデバッガー(WindBG)の下:仮想定数1.7GB、動作定数
2.1 GBの仮想では、プロセスがクラッシュしています(予想どおり)。しかし、なぜ仮想使用量は(非debug)msvcrt.dllでのみ増加し、デバッガーの下ではない場合にのみ増加するのでしょうか?すべての場合において、コンピレーションフラグは同一であり、ランタイムLIBのみが異なります。
正しい解決策はありません
他のヒント
多くの場合、問題は、リリースRTLを使用する場合ではなく、デバッグRTLによって無効にされる非初期化されたローカル変数です。見て 「リリースバージョンの生き残り」 そして、これが役立つかどうかを確認します。
所属していません StackOverflow