有个疑问,在WINCE下如果一直频繁申请内存(malloc),并调用free来释放它,是否一调用free就能将内存释放掉了,还是需要到进程退出呢?如果不是立即释放,是否可以调用其它API或有什么方法可以立即释放掉呢?
看了以下连接是说,内存不会立即释放,需要等到进程退出,在此请教各位大大,如何将malloc的内存立即释放掉呢?
相关连接如下:http://blog.chinaunix.net/u/30686/showart_260485.html
如果你需要非常频繁的申请内存,可以考虑内存池的做法。
也就是一开始就先申请一块大的内存,然后自己管理该内存,
你的频繁的申请内存就转换为对该大内存的管理的问题。比较容易解决。
to lenux:
内存池的做法是可取的,不过只做后备考虑,因为如果malloc分配的内存能够有方法让其立即释放内存的话,那么就问题就可以得到解决了.
我发此贴的目的是想有没有办法能够让malloc分配的内存,能够立即释放掉它.我的程序是非PC机下的,windows4.2系统.
是否立即释放内存这个就是和内存管理的设计和内存垃圾处理机制有关了。
不同的系统应该是不一样的。
代码中太依赖系统是不可取得。
内存池应该算是正规的做法。
自己写个程序测试下吧,我的理解是,FREE就是释放内存了,不过频繁的MALLOC内存,很容易泄露,
频繁的MALLOC内存,容易产生内存碎片,导致以后的申请失败。
既然在堆中,何不用HeapCreate HeapAlloc
to:nbcool
调用HeapCreate HeapAlloc,释放的时候就内存能够立即归还OS?
to:91program
是有可能产生内存碎片,这个是系统产生的?如何避免它呢,不调用malloc就可以了吗?我是想知道这个问题的原因和解决的办法.
to:lenux
个人觉得内存池可以解决,关键不好建立和维护,毕竟我的东西模块太多.so,我还是想知道是否有方法,能动态分配内存,释放时候并能立即归还OS.
HeapCreate 有点类似于内存池技术,是系统提供的API,创建了一个sepreate heap,然后HeapAlloc就是在这个heap中分配,最后使用HeapDestory就可以将整个sepreate heap释放,这样反复的HeapAlloc并不会产生任何碎片。有关内存的基础知识请看http://blog.eeworld.net/nbcool/archive/2005/12/14/552406.aspx,这里已经很详细了。如果做到立即释放是比较困难的,系统本身机制是无法改的,但是使用pages为单位进行分配和释放,应该能加快释放的速度。
***************************************************************************
思想决定行动,交流产生力量。
程序员在深圳QQ群大集
专业分类:
程序员在深圳JAVA群4247660
程序员在深圳c++群15195967
程序员在深圳.NET群Ⅱ:12203296
程序员在深圳TCP/IP协议栈开发:16956462
程序员在深圳JS & AJAX群:12578377
程序员在深圳英语学习群:23864353
深序员在深圳VB:11055959
程序员在深圳c++Ⅱ17409451
程序员在深圳c++群15195967
程序员在深圳嵌入式开发群37489763
程序员在深圳移动开发群31501597
程序员在深圳创业群33653422
不限专业分类:
高级群:17538442
第三群:2650485
第二群:7120862
第五群:29537639
第四群:28702746
第六群:10590618
第七群:10543585
第八群:12006492
第九群:19063074
第十群:2883885
第十一群:25460595
第十二群:9663807
深圳程序员QQ群联盟成立两年多,拥有三十个以上的QQ群,人数达两千多人,有30%以上的成员的经验丰富
的老手,包括国内外顶级大公司的成员(如微软、IBM,SUN,华为)、国内著名高校和研究院成员,和有
丰富实践经验的高级程序(包括参加过上亿元的项目的架构师),有很热爱技术的成员(包括自己写过嵌入
式操作系统),还有少数女程序员。
现推介如下QQ群,如有兴趣速速加入:深程高级群:17538442(此群不欢迎新手,已经在深圳工作的,月薪
6K以下的不欢迎)c++:15195967 .NET:12203296 mobile:31501597嵌入式:37489763 JAVA:4247660
——————————————————————————————————————————
希望大家不要认为群能给你送来什么,这只是一个平台,让同等水平的程序员有个交流的机会或许能得到
一点信息或许能带来一点启发。
有人说常聊QQ的人肯定技术不怎么样,但其实很多技术高朋友不需要做一些简单的重复劳动所以还是有
时间聊天的。
*****************************************************************************