转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd 作者联系方式:李先静 <xianjimli at hotmail dot com> 更新时间:2007-7-9
我一直认为作为一个在linux下工作的C程序员,若对内存有深刻的认识,不但程序的性能会更高,运行更稳定,编程速度也会更快。反之亦有相反的效果,有时一些内存错误让你摸不着头脑,不但大大降低开发速度,开发出来的软件稳定性也值得怀疑。 为了提高组员的编程水平,去年我制定了一系列的培训计划,并负责主讲部分重要课程,其中基础类课程中,有一堂关于内存的课程。当时的讲稿写得很粗略,后来的新同事说看不明白,我决定重新整理一下,放在BLOG,希望对新手有所帮助。 至于文章的标题,基本上是为了搞笑。最近重温星爷经典《大内密探零零发》,这是以大内高手作为文章的标题原因之一。另外也可以这样理解,内指内存,至于大字,修饰内存指其容量大,修饰内存高手形容水平很高,两种理解都可以。 其中包括下列文章: 1. 大内高手—内存模型 单线程模型 多线程模型 2. 大内高手—栈/堆 backtrace的实现 alloca的实现 可变参数的实现。 malloc/free系列函数简介 new/delete系列操作符简介 3. 大内高手—全局内存 .bss说明 .data说明 .rodata说明 violatile关键字说明 static关键字说明 const 关键字说明 4. 大内高手—内存分配算法 标准C(glibc)分配算法 STL(STLPort)分配算法 OS内部分配算法(伙伴/SLAB) 5. 大内高手—惯用手法 引用计数 预先分配 内存池 会话池 … 6. 大内高手—共享内存与线程局部存储 7. 大内高手—自动内存回收机制 8. 大内高手—常见内存错误 9. 大内高手—常用调试工具 (李先静) |