- 论坛徽章:
- 0
|
一点看法.
1. 内存碎片是computer science里看似简单但很困难的课题, 过去十几年确是没有很大突破. 有兴趣的看看这篇文章. http://www.cs.northwestern.edu/~pdinda/ics-s05/doc/dsa.pdf
2. FH的观点 "malloc/free的顺序,严格遵从先入后出原则就不会产生任何碎片。" 没错, 但前题条件太强. 否则就不需要malloc/free, 只要obstack就够了.
3. 内存泄漏容易堵上, 内存碎片很难消除. 前面那篇文章(wilson et al)提到, 有数学证明, 任何malloc的实现, 都有一种应用实例使它成为很糟的选择.
4. 小的程序当然不用考虑碎片, 如"date"这种程序甚至不用free. 但是稍大点的项目是必须考虑的. 留意一下商业软件就知道了. 如mingyanguo所说, "对内存管理有特殊需求,那么就自己实现一个内存管理算法好了"
5. malloc/free 是用户层的实现. 是基于OS的VMM上的. 跟CPU 体系没有太多的关系. 一个malloc的实现很方便移植到另一个平台上.
6. Linux RedHat 用的是PTmalloc, 或者说Doug Lee malloc. 写得非常好, 主体就一个文件:malloc.c. 写C/C++的都应当看看. http://gee.cs.oswego.edu/
[ 本帖最后由 Alligator27 于 2006-6-21 09:15 编辑 ] |
|