(本专栏仅是个人笔记本,有胡言乱语和错漏之处 )
C++对象模型
- 蓝色海上漂:C++ GCC 对象模型 从汇编代码分析虚函数、动态绑定原理 (Part 1) —— 结合汇编代码和fdump-class-hierarchy分析了GCC中多重继承下的对象在内存中的对象模型,以及虚函数表、动态绑定的底层实现。
- 蓝色海上漂:C++ GCC 对象模型 dynamic_cast实现 (Part 2) —— 结合源码,分析了
dynamic_cast
的GCC实现,以及为什么会开销较大。
STL代码阅读(GCC 5.4.0 libstdc++)
- 蓝色海上漂:C++ GCC STL 中unordered_(multi)set/map的实现原理 (Part 2 图解哈希表结构) —— 哈希表不仅仅是简单的
std::vector[std::forward_list]
,为了便于迭代器遍历容器,STL作者又进行了哪些操作? - 蓝色海上漂:C++ GCC STL 中unordered_(multi)set/map的实现原理 (Part 1 继承体系) —— 结合源码,分析了STL中的无序容器是怎么实现的?
_Hashtable
的六大基类分做了哪些事情? - 蓝色海上漂:C++ GCC STL 中的Curiously Recurring Template Pattern 奇异递归模板模式 —— CRTP在STL的_Hashtable中的一个例子。
- 蓝色海上漂:C++ GCC STL std::string实现 (短字符串优化) —— C++11之后的
std::string
对于短字符串的栈上优化(附源码和测试用例)。 - 蓝色海上漂:C++ GCC STL std::vector部分实现 —— 结合源码分析了
std::vector
的实现。 - 蓝色海上漂:C++ GCC STL std::list部分实现 —— 结合源码和图例,分析并实现了
std::list
环形双向链表的GCC代码。 - 蓝色海上漂:C++ GCC STL std::iterator_traits分析 —— 从写泛型算法的例子出发,分析型别萃取器
iterator_traits
如何使得STL中容器与算法相互独立;iterator_category
作为标签类在STL中的作用。 - 蓝色海上漂:C++ GCC STL back_inserter back_insert_iterator详解 —— 结合源码,分析了迭代器配接器
back_insert_iterator
和辅助函数back_inserter
的作用 - 蓝色海上漂:C++ GCC STL 中的与内存分配、管理相关的部分代码详解 —— 结合源码,分析了空间配置器,
::operator new, ::operator delete
的实现,以及标准库容器经常用到的几个内存函数:__uninitialized_fill_n_a
,_Construct
,_Destroy
- 蓝色海上漂:C++ GCC STL中的空基类优化 及 例子 Empty base optimization EBO
C++ 学习
- 蓝色海上漂:万能引用,引用折叠,移动构造函数,emplace_back及其实现,完美转发及其实现 —— 结合完美转发std::forward的的源码,分析了forwarding reference(万能引用)和完美转发的模板实例化过程和实现原理。
- 蓝色海上漂:new delete 以及 new[] delete [] 汇编层面分析 —— 从汇编代码分析new/delete/new []/ delete []的时候,编译器做了哪些事情。
- 蓝色海上漂:libstdc++ libsupc++ libc++异同 —— 分辨了一下容易混淆的几个词。