6
23
2011
1

近来学到的内存分配方法

最近在学习apache portable runtime,其中学到内存分配这块,apr使用的分配方式是内存池,不过作者说这种分配方式是一个败笔,由于本人对于底层内存分配算法的学习尚浅,无法领悟作者为什么会这么说,不过,也由此了解到了除了比较熟悉的内存池和一直以来都广为传颂的垃圾回收之外的一些内存分配方法——smart pointer智能指针,也叫auto ptr,其实在实现上,这是一个带有析构函数的模板类,可以利用它方便的管理指针,以避免内存泄漏问题,这是一种值得学习的思路,既没有增加语言本身的复杂性,有提供了更好的内存管理功能。还有就是apr中分配大块内存所用到的内存映射mmap——相当于直接将文件扔进内存(不分页,完全占用一段内存),这样大大提高了文件的访问效率,也方便了进程间的文件共享。

Category: 学习心得 | Tags:
6
23
2011
0

C++11

终于下定决心维护一个空间来总结自己的学习和成长,择日不如撞日,就从今天看到的C++11标准说起吧。

今天看到了一篇关于C++11的新特性的介绍文(原文链接:http://www.softwarequalityconnection.com/2011/06/the-biggest-changes-in-c11-and-why-you-should-care/),虽然对C++远未称得上了解,平时使用C++也并未用过什么高级特性,但是看到其中一些新特性,还是感到十分激动,总的来说,我觉得C++正变得更“人性化”了,语法变得更加方便——实现匿名函数的lambda表达式,auto变量类型的自动类型推导,各种新的库,特别是被称为“state of the art”的线程库,不过有一点可爱的是,早早被预言的GC还是没有露面,其实想来,没有好的GC也算是C++区别于其他语言的一个标志吧,虽然这个标志不怎么友善。此外,重要的nullptr关键字也让我耳目一新,发现原来null用来表示空指针其实是不甚合理的(比如在传递参数的时候,需要强制类型转换);而看起来简单,但是对于赋值和传递参数却能大幅提升效率的右值引用,则让我更是眼前一亮——其实类似的问题在学习C++时考虑过,但是由于当成“标准”就接受了,并没有去质疑和思考更好的解决办法,现在终于看到了一种比较优秀的解决方案——标准是人定的,不断追求更优,才是每个人应该追求的目标!

不过,写C++编译器就会变得更加复杂了吧……

还是要好好学习,多多思考,精益求精才行。

就从这篇日志开始,见证我的成长吧!

 

Category: 学习心得 | Tags:

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com