我有一个用英特尔编译器编译的 C++ 代码,32 位,在 MS VC6 模式下,所以使用 msvcrt.dll 或 msvcrtd.dll。该进程进行大量内存分配和释放。我使用 WMI 监控内存使用情况并查看 VirtualSize 和 WorkingSetSize。
使用调试运行时 (msvcrtd.dll):虚拟常量 1.7GB,工作常量 1.2GB
,使用非调试运行时 (msvcrt.dll):虚拟提升 1.7-- 2.1GB,
使用非调试运行时提升 1.2-1.4GB 但低于调试器(windbg):虚拟常量 1.7GB,工作常量
在 2.1 GB 虚拟时,进程正在崩溃(如预期的那样)。但是,为什么只有(非调试)msvcrt.dll 并且只有不在调试器下才会增加虚拟使用量?在所有情况下,编译标志都是相同的,只有运行时库不同。