您好,匿名用户
随意问技术百科期待您的加入

用free释放内存,但是内存没有被释放

0 投票

写了个链表(http://github.com/tioover/c-study/blo... ,89行是释放的语句,申请内存的就在开头)
出现问题
明明用了free,但是内存没有被释放
写了个测试,生成了两千万个节点然后一个个free(https://github.com/tioover/c-study/bl...
我看内存占用,这个进程还占用着内存,除非关掉

用户头像 提问 2013年 9月21日 @ Caster 上等兵 (256 威望)
分享到:

1个回答

+1 投票
 
最佳答案

对于第一个问题,这样简单的代码,你可以自己想办法找出程序结束的时候还有哪些内存没释放。提醒一下:每次申请的时候记录一下申请内存的地址(及代码行号),释放的时候标记被释放。

第二个问题,这个跟C函数库的实现机制有关。free释放的内存并不会立刻、完全交回给系统。通常的实现是,malloc并不是每次都找内核要(因为找内核要比较慢),实际上是一次要一堆,然后再按需分配给你,因此每次free并不一定能保证把那次向内核申请的内存都不需要了。此外,即便是free了,很有可能程序很快还要申请,保留也是为了提高效率。

用户头像 回复 2013年 9月21日 @ Alistar 上等兵 (326 威望)
选中 2013年 9月7日 @Caster
提一个问题:

相关问题

0 投票
1 回复 33 阅读
0 投票
1 回复 43 阅读
用户头像 提问 2012年 12月1日 @ Shyvana 上等兵 (214 威望)
0 投票
1 回复 41 阅读
0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Talon 上等兵 (294 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...