MSVCRT:メモリの使用量はワイルドになりますが、デバッガーの下ではありません

StackOverflow https://stackoverflow.com/questions/2779890

質問

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によって無効にされる非初期化されたローカル変数です。見て 「リリースバージョンの生き残り」 そして、これが役立つかどうかを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top