LevelDB 源码阅读:理解其中的 C++ 高级技巧
0 CommentLevelDB 整体代码还是比较好懂,没有用很多 C++奇淫技巧。不过还是有部分实现,相当比较少见,比如柔性数组、链接符号导出、Pimpl 类设计等。本文会梳理这里的 C++ 高级技巧,帮助更好地理解 LevelDB 的实现。
柔性数组
在 util/cache.cc 的 LRUHandle 结构体定义中,有一个柔性数组(flexible array member) char key_data[1]
,用来在 C/C++ 中实现可变长数据结构。
1 | struct LRUHandle { |