1
nino789pzw 2012-07-14 10:37:35 +08:00
有各种lib的 但是自己做memory management更合适更灵活吧
|
2
Ricepig 2012-07-14 10:42:32 +08:00
找一个为c编写的GC库?
|
3
ssword 2012-07-14 11:06:29 +08:00
手工管理内存的好处是可以精确地控制内存,但好处也仅止于此了。使用GC虽然会消耗相当一部分额外的内存,但可以让人生更快乐许多。
C/C++的话boehm GC可以用,保守式的垃圾收集,malloc()来的内存就不需要人肉释放了 http://www.hpl.hp.com/personal/Hans_Boehm/gc/ 不过C/C++的GC有个坑,那就是我们的程序有了GC很不错,但是我们用的三方库是没有GC的,照样需要小心地管理这些资源。 要自己管理内存,纯粹的人肉free()依然也是不靠谱的。 C++的方案是通过RAII,将对象的生存周期与变量的生存周期保持一致; linux内核中通用的方案是给结构体留一个refcount字段做引用计数; nginx是弄一个内存池,处理一个http请求中用到的所有内存都来自于这个内存池,待处理完毕就一股脑把它释放掉; cocoa是内存池+引用计数,在一股脑的释放内存池时,如果一个对象还有被引用,那么就不释放它。这一来通过内存池可以负责释放临时对象,而常驻于内存的对象,则通过引用计数来管理。 |
4
haohaolee 2012-07-14 11:48:23 +08:00
果断用C++呗,支持C的编译器8成也支持C++
|
5
xpfd 2012-07-14 13:06:51 +08:00
嵌入式表示从来不考虑GC问题,所有资源都是静态数组
|