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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top