gpt4 book ai didi

c - 为什么释放分配的数据后内存使用量没有减少?

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:31 26 4
gpt4 key购买 nike

我创建了一个包含 1,000,000 个项目的链表,占用了 16M 内存。然后我删除并释放了其中的一半。我以为内存使用会减少,但没有。

为什么会这样?

我正在通过 Mac OS X 10.8.2 上的事件监视器检查内存使用情况。

如果您想查看我的代码,here it is .

最佳答案

一般来说,free 不会将内存释放回操作系统。它仍然分配给进程,因此操作系统将其报告为已分配。从您的程序的 POV 来看,它可以满足您所做的新分配。

请注意,由于您释放了所有其他节点,因此您的内存几乎肯定现在非常零散。这个空闲内存是在它们之间分配内存的小块中,因此只能用于满足小分配。如果您进行更大的分配,该进程将转到操作系统以获取更多内存。

由于进程一次从操作系统获取内存一页,即使它想要它也不能将这些碎片内存释放回操作系统。您正在使用每个页面的一部分。

关于c - 为什么释放分配的数据后内存使用量没有减少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493639/

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