C++初始化陷阱:=default的微妙之处

2025-05-15

本文探讨了C++中令人迷惑的初始化机制。通过一个简单的例子,揭示了`=default`放置位置对结构体成员初始化结果的巨大影响:在声明中使用`=default`的结构体成员会被零初始化,值为0;而在定义中使用`=default`的结构体成员则具有不确定值,读取会导致未定义行为。文章深入解释了默认初始化、值初始化和零初始化的区别,并强调了显式初始化变量的重要性,避免潜在的bug和安全风险。

阅读更多
开发

打造你自己的 Linux 调试器:从零开始 (第一部分)

2025-04-25

本文是系列教程的第一部分,教你如何从零开始构建一个 Linux 程序调试器。教程将涵盖调试器的核心机制,并逐步实现启动、暂停、继续执行、设置断点(内存地址、代码行、函数入口)、读写寄存器和内存、单步执行等功能。作者使用 C/C++ 语言,并依赖 Linenoise 和 libelfin 库。教程分十部分,每部分对应 GitHub 上的分支。后续还会介绍远程调试、共享库支持、表达式求值和多线程调试等高级特性。

阅读更多
开发