【问题标题】:msvcrt: memory usage goes wild, but not under debuggermsvcrt:内存使用量变大,但不在调试器下
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 2011-08-15
      相关资源
      最近更新 更多