msvcrt:内存使用量很大,但不在调试器下

时间:2010-05-06 09:16:17

标签: c++ memory-management vc6 msvcrt

我有一个用英特尔编译器编译的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并且只有在调试器下没有? 在所有情况下,编译标志都是相同的,只有运行时库是不同的。

1 个答案:

答案 0 :(得分:0)

问题通常是未初始化的局部变量,它们由调试RTL清零,但在使用版本RTL时则不会。看看"Surviving the Release Version",看看这是否有帮助。