【发布时间】:2010-05-06 09:16:17
【问题描述】:
我有一个使用 Intel 编译器编译的 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 并且只有不在调试器下才会增加虚拟使用量? 在所有情况下,编译标志都是相同的,只有运行时库不同。
【问题讨论】:
标签: c++ memory-management visual-c++-6 msvcrt