知乎 - 南山烟雨珠江潮

2 篇内容

技术文章知乎 - 南山烟雨珠江潮

C++神技之__builtin_frame_address

本文系统讲解 GCC/Clang 内建函数 __builtin_frame_address 的原理与用法。文章从栈指针 SP 与帧指针 FP 的基础讲起,说明 x86-64 与 ARM64 上双字帧记录的统一布局,即 [fp] 存旧 FP、[fp+8] 存返回地址。作者通过可运行工程演示 level=0 探秘当前栈帧、估算栈使用量、观察局部变量的对齐与填充,并用 level=N 配合 __builtin_return_address 沿帧指针链手搓简易 backtrace。文章还深入剖析 level 必须为编译期常量、-fomit-frame-pointer 导致链条断裂、内联与尾调用、返回 NULL、跨架构可移植性等陷阱,并与 backtrace()、_Unwind_Backtrace、std::stacktrace 做方案对比,指出帧指针方案适合采样剖析与受限环境。

推荐收录。文章没有停留在 API 罗列,而是把栈帧布局、帧记录结构、编译选项影响和实测输出串成完整证据链,并逐条给出陷阱与边界,读者可据此理解调用栈的机器层机制。对想深入 C++ 底层、编译器与可观测性的工程师,其栈用量测量、手工 backtrace 与方案取舍方法都有较强迁移价值。

技术文章知乎 - 南山烟雨珠江潮

std::networking最新动向:依然是源自asio的协程原生I/O

这篇文章系统梳理了 C++ 标准网络库 std::networking 的最新提案方向,核心观点是:网络 I/O 更适合直接建立在 C++20 协程之上,而不是继续沿用 sender/receiver 的 std::execution 抽象。作者从性能开销、复合结果处理、编译时间、ABI 稳定性、学习曲线和生产部署等多个维度对比了两类方案,并详细解释了 IoAwaitable、io_env、Executor、any_stream 等设计如何继承并简化 Asio 的成熟思路。

推荐收录,因为文章不只是转述标准化动态,而是把 C++ 网络编程的关键设计分歧、工程权衡和迁移路径讲得非常完整,适合作为理解标准库网络化方向的长期参考。它对正在使用 Asio、关注 C++ 协程或评估异步 I/O 架构的读者都有直接迁移价值。