内存泄漏或内存碎片?

时间:2013-09-20 09:05:54

标签: c++ memory-leaks c++builder memory-fragmentation

我在 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) {}
}

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

查看虚拟内存是区分泄漏和碎片的好主意,但我该怎么做? Windows中是否有工具可以测试它?

1 个答案:

答案 0 :(得分:0)

'增加内存(私人工作集)中的程序使用的内存,Windows任务管理器,我相信这是一个内存泄漏。 - 这是不正确的

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

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