0

私はインテル®コンパイラー、32ビットでMSVC6モードでコンパイルされたC++コードを持っているので、msvcrt.dllまたはmsvcrtd.dllのいずれかを使用します。このプロセスでは、大量のメモリの割り当てと割り当て解除が行われます。WMIを使用してメモリ使用量を監視し、VirtualSizeとWorkingSetSizeを確認します。

デバッグランタイム(msvcrtd.dll)を使用:仮想定数1.7GB、
非デバッグランタイム(msvcrt.dll)を使用して動作定数1.2GB:仮想レイズ1.7〜2.1GB
、 非デバッグランタイムを使用して1.2〜1.4GBをレイズしますが、デバッガー(windbg):仮想定数1.7GB、動作定数

2.1 GBの仮想では、プロセスがクラッシュします(予想どおり)。しかし、仮想使用量が(デバッグ以外の)msvcrt.dllでのみ、デバッガーの下にない場合にのみ増加するのはなぜですか?すべての場合において、コンパイルフラグは同一であり、ランタイムライブラリのみが異なります。

4

1 に答える 1

0

多くの場合、問題は初期化されていないローカル変数であり、デバッグ RTL によってヌルにされますが、リリース RTL を使用する場合はそうではありません。「Surviving the Release Version」を見て、これが役立つかどうかを確認してください。

于 2010-05-06T12:54:21.843 に答える