摘要:
上一篇文章中,关于stl_vector的故事只是个开始. 这篇文章中,接着去分析vector中的细节问题. 再次声明,我没有看过关于stl源码分析方面的书籍,强调这一点是为了不会让别人误会我是从别的地方抄袭的. 另外,欢迎大家拍砖。 后面陆续的几篇文章都会详细分析vector中的函数实现.我尽量做到篇幅不大,而且能够尽量用自己的语言和自己分析的结果给大 家展现实现的过程. 这样不会浪费大家的时间.写的不好就请原谅了. push_back函数的作用就是从_M_finish指向的位置开始插入数据。如果预先分配的存储单元不够,则会做扩展处理.会在后面分析的时候 说明这个问题. vo... 阅读全文
随笔档案-2012年07月
写在我离开之前
2012-07-29 12:22 by respawn, 1897 阅读, 收藏,
摘要:
转眼间,三年的大学生活就这样过去了. 感谢你们,伴我走过两年学习和生活的兄弟,一群可爱的人. 大二的时候,我们聚在一起,各自分组做项目,有老师的陪伴.那时候我们也许想的更多的就是学习. 在那些激情的岁月里,大家不停的在做项目的过程中成长.很快,都已不是当初懵懂不知的大一新生. 后来暑假的时候我们都留校,呆在一起做项目.有时间的时候就一起去玩,那时候的日子真的很快乐. 大二暑假,是我的转型期. 接到头的任务,需要协助研究生做一个科研的项目,被迫从JAVA转C. 那时候开发就只有我和一个师兄在做,那位师兄学的是C++,而我却对C不甚了解,一切都要从零开始.好在项目是在linux下面开... 阅读全文
C++ Standard Stl -- SGI STL源码学习笔记(05) stl_vector 与 一些问题的细化 1
2012-07-29 08:47 by respawn, 1722 阅读, 收藏,
摘要:
上篇文章中很粗略的角度讲解了一下stl_deque的设计思想,以及涉及到得浅显的STL内存管理方面,至少我们看得到的冰山一角. 这篇文章中关于vector的分析,我将将一些问题细化一下,对一些函数做细致的分析.有些时候,有些问题还是说清楚比较好. 打开stl_vector的源码,发现vector的设计思路和stl_deque如出一辙,想想这样是很合理的,保持实现的一致性.只是stl_vector没有提供一个确定的模板类Iterator去实现迭代器,而是在vector模板类中实现了迭代. 但是和deque基本没有什么大的不同.下面来看看源码: 1. 这次就不讲解设计部分了,主要讲解... 阅读全文
C++ Standard Stl -- SGI STL源码学习笔记(04) stl_deque && 初涉STL内存管理
2012-07-28 15:07 by respawn, 1772 阅读, 收藏,
摘要:
在SGI STL源码中,很多时候一些模板类提供默认形参的时候,都会选择提供deque.template ) > // stl_stack.h template ) > // stl_queue.h _STL_DEPENDENT_DEFAULT_TMPL宏就是替换后扩展为"=deque".既然出场的频率那么高,所以我首先选择他.一起去看看deque的源码.deque的源码很多,一千六百多行的代码. 而且实现也是蛮复杂的.包括deque_iterator,deque_allocator,deque_base,deque.如果你也在阅读deque的源码,我的建议是先从 阅读全文
C++ Standard Stl -- SGI STL源码学习笔记(03) STL中的模板编译期检查与偏特化编译期检查
2012-07-27 10:13 by respawn, 1684 阅读, 收藏,
摘要:
前一篇文章中说了SGI STL中的Concepts Check,其实就是利用模板类类实例化在编译期会执行检查的特性. SGI STL大量运用了Concepts Check,前面已经说过,这里不再多说.在>中在"模板与泛型编程"章节中有讲解模板的特化,不再赘述. 模板特化分为两种: 1. 绝对特化 2. 部分特化在这片博文中,主要来看一下部分特化.依旧是选用stl_stack.h源码.template ) >宏__STL_DEPENDENT_DEFAULT_TMPL只是简单的用来实现默认模板参数的指定:# define __STL_DEPENDENT_DEFAU. 阅读全文
C++ Standard Stl -- SGI STL源码学习笔记(02) Concepts Check
2012-07-25 17:28 by respawn, 1823 阅读, 收藏,
摘要:
希望很多同学不是因为看到标题,出于好奇心才进来的. 以前我驻扎在CSDN一段时间,但是后来搬到了博客园. 博客园同CSDN比起来,感觉好很多,自己也不知道是什么原因. 可能是CSDN现在很多所谓的技术专家都开始转行写小说了,俺不喜欢看小说,喜欢搞技术,所以就到了博客园. 标题上写着是介绍STL中的Concepts Check,可以说是一种机制. 今天我也是在阅读SGI STL源码的过程中遇到这个问题,问了很多人,也查阅了很多资料.但是很多人表示对此毫不知情~ 下午又去图书馆找资料,最后也只是找到一本>,粗略的浏览了一下相关章节,有点吃力,原因是它的线索是前后贯穿的,引用前面章节的例子来说 阅读全文
C++ Standard Stl -- SGI STL源码学习笔记(01) auto_ptr
2012-07-25 07:03 by respawn, 3200 阅读, 收藏,
摘要:
写在前面: 学C++,到现在是第九天了,所以我只是在理论上对C++有浅显的认知.对于实际应用,我还没有实际的经验.所以接下来对于SGI STL源码分析的相关文章,更多的就只是针对源码的直接分析,是没有关于实际应用场景经验之谈的.所以我们只谈源码,其他不谈. 对于侯捷的那么本>,我下载了PDF,只是粗略的浏览了一下目录而已.想要说明的问题就是我没有参考别人现成分析的书籍,可能在分析的过程中有参考过一些博客中不错的关于一些源码阅读过程中细节问题的解释.如果分析的有误,也是我自己分析的过错,绝对不是参考XX人错误的分析资料,与他人无关.auto_ptr的实现在memory文件中,包括所有的注释 阅读全文
学习C++要多久? 是时间的问题吗?
2012-07-24 08:20 by respawn, 16731 阅读, 收藏,
摘要:
这一周没有写过博客,是因为时间被安排来学习C++. 尽管学C很久,但是不得不承认,在C++方面,只能是个小菜鸟~今天是第八天了,我在看着sgi stl的源码. 欣赏着曾让C++繁荣的经典之作.为什么要学习C++ ? 以前我是如此的固执的认为C++是一门很悲剧的语言,因为它夹在C与 JAVA的中间,注定高不就低不行. 只能委身在游戏领域了~也不知道自己是怎么改变自己的想法的,可能是因为自己马上步入大四,就业的压力来了. 随着自己渐多的浏览招聘信息,发现自己需要学习一下C++,给自己在招聘的时候提供更多的选择.随着学C的逐渐深入,也意识到到了一定的阶段,需要的就是实践的经验来提高自己,理论的高度已 阅读全文
学习工具篇 - eclipse 中使用autotools plugins
2012-07-16 09:33 by respawn, 4137 阅读, 收藏,
摘要:
很多时候我们都是在使用IDE来构建自己的小项目,使用IDE,在学习中足够了。但是渐渐的发现使用IDE已经满足不了自己了,发现自己处于两难的境地。为什么这么说呢? 首先,最主要的出发点是想要去自己动手构建一个项目。 其次,去学习如何写makefile吗? 第三,有没有其他的选择呢?学习makefile,是根本上出发去学习如何组织构建一个项目,应该是不错的选择,真的不错吗?当尝试去查找makefile相关资料的时候,看到长长的文档目录和密密麻麻的英文,即使我承认自己的英文水平还不错,但是头也大了。也有一些不错的中文makefile教程,但是学习起来无异于学习一门新的语言,从时间的角度出发,至少对于 阅读全文
GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)
2012-07-10 23:18 by respawn, 3157 阅读, 收藏,
摘要:
补充在之前文章中一些关于内存对齐方面知识的介绍~ 阅读全文
GNU C - Using GNU GCC __attribute__ mechanism 02 Variable Attribute && Type Attribute
2012-07-09 20:51 by respawn, 1500 阅读, 收藏,
摘要:
上篇文章中介绍了 __attribute__ mechanism Function Attribute 参考链接:http://www.cnblogs.com/respawn/archive/2012/07/09/2582548.html我不喜欢对自己写的文章做过多的修饰,所以很不注重排版,喜欢走简约路线. 所以如果您认为我的博文排版很差而忽略文章内容的话,那么我只能说我注重技术,不注重次要的浪费时间的无价值动作. 如果您可以对我的博文进行批评指正的话,那我这里谢过了.技术嘛,需要多讨论,多研究,不是写出来给别人赞扬的.(上述仅代表我个人观点,如果您不喜欢,请原谅.)下午有事出去了,直到刚才. 阅读全文
GNU C - Using GNU GCC __attribute__ mechanism 01 Function Attribute
2012-07-09 13:12 by respawn, 2965 阅读, 收藏,
摘要:
近来阅读glibc源码的时候遇到很多关于__attribute__的问题,索性就查找了相关的资料,学习了一下.要是不解决了这个问题,有的时候还真的是比较难下手.就拿glibc来说,使用xcscope搜索POSIX pthread函数: pthread_create,得到的结果如下:如果一路跟进函数的话,最后会发现这样子的一个宏定义:下面是GNU glibc开发人员对此类宏的注释,看起来直白一点:现在只是知道,在链接的时候,寻找pthread_create会被链接到__pthread_create_2.1/__pthread_create_2.0.上面展现的是GNU glibc中很常用的编程技巧 阅读全文
GNU C - 一个别致的HelloWorld程序 引申到: __attribute__((constructor)|(destructor)(PRIORITY))
2012-07-09 04:22 by respawn, 12133 阅读, 收藏,
摘要:
在前面的>关于object files的内容中,有看到使用自定义段的部分内容,(如果关于object files的内容不了解的话,可以去参考>这本书或者去wiki,其中也有关于段的解释,也可以称作节区.) 可以通过硬编码实现自定义段. __attribute__ ((section("name"))) .....编译生成的object file,代码会保存在".text"段,全局变量和静态变量会放在".data"和".bss"(未初始化的全局变量和局部静态变量)利用GCC的扩展机制就可以做到自定义段了. 阅读全文
C复习篇 - 使用Posix标准线程库 Porgramming with Pthread
2012-07-08 16:38 by respawn, 2386 阅读, 收藏,
摘要:
Programming with pthread? what is Pthread?Pthread,作为C/C++编程的标准线程库,其实它是POSIX Standard thread library. 那么,怎么去理解POSIX标准呢? 下面给一些资料的链接,有兴趣的可以自己去查看. 1. http://zh.wikipedia.org/wiki/POSIX 2. standards.ieee.org/findstds/standard/1003.1-2008.html 3. www.opengroup.org/austin/papers/posix_faq.html 4. www.unix. 阅读全文
学习工具篇 - eclipse 结合cdt EGit 插件的使用
2012-07-05 09:22 by respawn, 4124 阅读, 收藏,
摘要:
在前面的一片文章中,随便的介绍了一下emacs + cscope + xcscope阅读源码.今天这篇文章就介绍一下eclipse,安装相关插件也能够起到和上面emacs安装插件后结合终端svn/git 使用的效果~ 为了简洁和方便,我一般很少安装IDE,但是eclipse例外,因为 它可以支持多种语言的开发.用起来很方便.1. 安装eclipse cdt 插件:相信很多人都有配置过eclipse + cdt 插件,配置的过程很简单,就简单的介绍一下.因为相关的文章很多. 从eclipe的菜单选项中选择Help -> Install New Softwware,然后去添加上cdt插件的官 阅读全文
学习工具篇 - 还在为寻找合适的源码工具烦恼吗?
2012-07-02 20:25 by respawn, 3057 阅读, 收藏,
摘要:
这篇博文和前面的篇文章是衔接的,也算是一点点补充吧. 在前文中说过关于阅读源码可以提高自己的修养~ 对于源码的阅读,无非就是选中一个自己认为适合自己的源码包,然后去阅读和学习.这里就有一个问题了,你使用什么样子的工具阅读呢? 使用vi? 或者是win下的记事本?虽然很多的源码都是模块化开发的,在阅读的时候选中一个小模块,然后慢慢琢磨就可以了.但是在源码阅读的过程中总是需要查找的功能的,一般的文本编辑器只能实现在一个文件中的指定查找,功能有限.不过,你也可以使用IDE阅读源码,方法很多,随自己喜欢吧.其实,我们还是有其他选择的.解决的办法是什么呢? emacs/vim会给我们答案.我已经不使用v 阅读全文
浙公网安备 33010602011771号