摸鱼精选第 5 期
1. 「现代 C++设计魅力」虚函数继承-thunk 技术初探
作者工作中使用 LLDB 调试器调试这一段 C++多继承程序的时候,发现通过 lldb print(expression 命令的别名) 命令获取的指针地址和实际理解的 C++的内存模型的地址不一样。然后通过 lldb 一步步分析汇编代码,验证了在指针类型转换的时候,编译器内部做了真实的地址偏移。
通过分析,我们得知编译器在函数调用时通过 thunk 技术动态调整入参 this 指针和返回值 this 指针,保证 C++调用时 this 的正确性;
在通过 LLDB expression 获取非虚函数基类指针内容时,LLDB 内部通过 summary format 进行格式化转换,格式化转化时会进行动态类型的获取。
2. C++智能指针-使用、避坑和实现
本文主要介绍以下内容:
- 智能指针的由来
- auto_ptr 为什么被废弃
- unique_ptr 的使用、特点以及实现
- shared_ptr 的使用、特点以及实现
- weak_ptr 的使用、特点以及实现
- 介绍作者在工作中遇到的一些职能指针相关的坑,并给出一些建议
3. 探索移动端音视频与 GSYVideoPlayer 之旅
作者从基础知识开始介绍封装、音频编码、视频编码,视频流 M3U8 和 RTSP。
接着重点介绍了作者开发的 GSYVideoPlayer,以及比较了 IJKPlayer、MediaPlayer 和 ExoPlayer 的区别。
最后列出了一些音视频开发中的常见问题。
4. 2021 年 Rust 生态调研报告 | 星辰大海 上篇 下篇
长篇巨著,分析了 Rust 当前的生态,前景,应用,以及未来。