2

我在Borland Builder C++ 6中运行以下代码,可以看到内存(私有工作集)、Windows 任务管理器中程序使用的内存增加,我认为这是内存泄漏。

for (int i = 0; i < 100000; i++)
{      
   try {
     int n = 0;
     int r = 1 / n; //division by zero
   }
   catch (EDivByZero& e) {}
}

我尝试用 Builder C++ 替换默认内存管理器,FASTMM4但看到相同的行为。是因为内存泄漏还是内存碎片,因为我在两者之间感到困惑。我相信在这两种情况下,程序都必须将虚拟内存分页到磁盘,从而增加使用的内存。

查看虚拟内存是区分泄漏和碎片的好主意,但我该怎么做呢?windows 里面有没有工具可以测试呢?

4

1 回答 1

0

' 增加内存(私有工作集)、Windows 任务管理器中程序使用的内存,我认为这是内存泄漏。- 这是不正确的

当您在程序中释放内存时,它将被释放回您的程序,而不是 O/S。内存只会在程序退出时释放给操作系统。

注意 - 这只是典型的行为,C++ 没有明确说明这一点,YMMV。

于 2013-09-20T09:08:18.050 回答