Question

J'ai un code C ++ compilé avec le compilateur Intel, 32 bits, en mode MS VC6, donc en utilisant soit msvcrt.dll ou msvcrtd.dll. Le procédé permet l'allocation de mémoire lourde et désaffectation. Je surveille l'utilisation de la mémoire avec WMI et regardez VirtualSize et WorkingSetSize.

avec l'exécution de débogage (msvcrtd.dll): 1.7GB constante virtuelle, travail 1.2GB constante
avec l'exécution non-debug (msvcrt.dll): virtuel élévation 1.7-- 2.1GB , travail élever 1.2-1.4GB
avec l'exécution non-debug mais sous débogueur (windbg): 1.7GB constante virtuelle, constante de travail

Au processus 2.1 GB virtuel se bloque (comme prévu). Mais pourquoi l'augmentation de l'utilisation virtuelle uniquement (non-debug) msvcrt.dll et seulement si pas sous débogueur? Dans tous les cas de compilation des drapeaux sont identiques, libs d'exécution sont différentes.

Pas de solution correcte

Autres conseils

Le problème est souvent non initialisée variables locales qui sont Nulled par le RTL debug, mais pas lors de l'utilisation du RTL de libération. Jetez un oeil à « Survivre à la version Release » et voir si cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top