msvcrt:内存使用变得疯狂,但不在调试器下

问题描述:

我有一个C++代码与英特尔编译器,32位,在MS VC6模式下编译,因此使用msvcrt.dll或msvcrtd.dll。该过程会导致内存分配和重新分配。我使用WMI监视内存使用情况并查看VirtualSize和WorkingSetSize。msvcrt:内存使用变得疯狂,但不在调试器下

与调试运行时(msvcrtd.dll):虚拟恒定1.7GB,工作恒定1.2GB
与非调试运行时(MSVCRT.DLL):虚拟饲养1.7-- 2.1GB,工作提高1.2-1.4 GB
带有非调试运行时,但在调试器(windbg)下:虚拟常量1.7GB,工作常量

在2.1 GB虚拟进程正在崩溃(如预期的那样)。但是,为什么虚拟使用率只会随着(非调试)msvcrt.dll而增加,并且只有在不在调试器下才会增加? 在所有情况下,编译标志都是相同的,只有运行时库不同。

通常,问题是未初始化的局部变量,它们被调试RTL清零,但在使用发布RTL时没有。看看"Surviving the Release Version",看看这是否有帮助。