0

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

4

1 回答 1

0

通常问题是未初始化的局部变量被调试 RTL 清空,但在使用发布 RTL 时不会。看看“Surviving the Release Version”,看看这是否有帮助。

于 2010-05-06T12:54:21.843 回答