MSVCRT: utilizzo della memoria si scatena, ma non sotto debugger
-
03-10-2019 - |
Domanda
Ho un codice C ++ compilato con Intel compilatore, a 32 bit, in modalità MS VC6, in modo da utilizzare sia msvcrt.dll o MSVCRTD.DLL. Il processo di allocazione di memoria rende pesante e deallocazione. A monitorare l'utilizzo della memoria con WMI e guardare VirtualSize e WorkingSetSize.
con runtime di debug (MSVCRTD.DLL): virtual costante di 1,7 GB, lavorando costante 1.2GB
con tempo di esecuzione non-debug (Msvcrt.dll): raccolta virtuale 1.7-- 2.1GB , lavorando alzando 1.2-1.4GB
con tempo di esecuzione non-debug ma sotto debugger (WinDbg): virtual costante di 1,7 GB, costante lavoro
2.1 GB virtuale del processo è crash (come previsto). Ma perché l'aumento di utilizzo solo virtuale con (non-debug) msvcrt.dll e solo se non sotto debugger? In tutti i casi flag di compilazione sono identici, solo librerie di runtime sono diversi.
Nessuna soluzione corretta
Altri suggerimenti
variabili locali Spesso il problema non è inizializzato che sono annullato dalla RTL di debug, ma non quando si utilizza il RTL rilascio. Dai un'occhiata alla "Sopravvivere alla versione Release" e vedere se questo aiuta.