gpt4 book ai didi

c++ - 内存泄漏还是内存碎片?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:56:00 24 4
gpt4 key购买 nike

我在 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有没有工具可以测试?

最佳答案

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

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

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

关于c++ - 内存泄漏还是内存碎片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com