我在 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中是否有工具可以测试它?
答案 0 :(得分:0)
'增加内存(私人工作集)中的程序使用的内存,Windows任务管理器,我相信这是一个内存泄漏。 - 这是不正确的
当您在程序中释放内存时,它将被释放回您的程序,而不是O / S.只有在程序退出时才会将内存释放到操作系统。
注意 - 这只是典型行为,C ++没有明确说明这一点,YMMV。