当前位置:  开发笔记 > 编程语言 > 正文

为什么我的c程序不能释放内存呢?

如何解决《为什么我的c程序不能释放内存呢?》经验,为你挑选了3个好方法。

我已经在c中制作了一个程序,并希望看到它使用和注意了多少内存,通常使用它时内存使用量增加(在启动时它使用大约250k,现在它是1.5mb).afaik,我释放了所有未使用的内存,并在一段时间后,应用程序使用更少的内存.是否有可能,释放的内存只是从"活动"内存转移到"有线"或其他东西,所以当需要可用空间时它会被释放?顺便说一句.我的机器在mac os x上运行,如果这很重要的话.



1> Konrad Rudol..:

你如何确定内存使用情况?您是否尝试过使用valgrind来查找潜在的内存泄漏?这真的很容易.只需启动应用程序valgrind,运行它,然后查看结构良好的输出.



2> David Thornl..:

如果您正在查看操作系统的内存使用情况,您可能会看到此行为.释放的内存不会自动返回到操作系统,但通常会保留在进程中,并且可以在以后进行malloced.你所看到的通常是记忆使用的高水位标记.

正如Konrad Rudolph建议的那样,使用一些东西来检查进程内部的内存以寻找内存链接.



3> Zan Lynx..:

C库通常不会向操作系统返回"小"分配.相反,它会在下次使用时保留内存malloc.

但是,许多C库将释放大块,因此您可以尝试执行几兆字节的malloc然后释放它.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有