Frage

Ich habe einen Code C ++ kompiliert mit Intel-Compiler, 32bit, in MS VC6-Modus, also entweder msvcrt.dll oder msvcrtd.dll verwenden. Der Prozess stellt hohe Speicherzuweisung und Aufhebung der Zuordnung. Ich überwache die Speichernutzung mit WMI und Blick auf Virtual und WorkingSetSize.

mit Debug-Runtime (msvcrtd.dll): virtual Konstante 1.7GB, arbeitet konstant 1.2GB
mit nicht-Debug-Runtime (msvcrt.dll): virtueller Anhebung 1.7-- 2,1 GB , Arbeits Anhebung 1.2-1.4GB
mit nicht-Debug-Laufzeit aber unter Debugger (windbg): virtual Konstante 1.7GB, arbeiten konstant

mit 2,1 GB virtuellen Prozess abstürzt (wie erwartet). Aber warum sollte die virtuelle Nutzung Erhöhung nur mit (nicht-debug) msvcrt.dll und nur wenn diese nicht unter Debugger? In allen Fällen sind Kompilation Flags identisch, nur Runtime-Libs unterschiedlich sind.

Keine korrekte Lösung

Andere Tipps

Oft wird das Problem nicht initialisierte lokale Variablen, die durch das Debug-RTL auf Null gesetzt werden, aber nicht, wenn die Freigabe RTL verwenden. Hier finden Sie aktuelle „Überleben in der Release-Version“ und sehen, ob das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top