tag

C++

共 57 篇文章。
全部文章JavaGo书稿TypeScript游戏开发独立开发者小游戏游戏设计Godot性能优化RustKafkaPython游戏引擎
cpp

C++ 移动语义与完美转发:从右值引用到引用折叠

移动语义是 C++11 最重要的语言革新之一,它让资源所有权可以在对象之间零成本转移;完美转发则借助引用折叠与 std::forward 把实参的值类别原样传递下去。本文从值类别与引用基础出发,逐层剖析移动构造与移动赋值的手写实现、引用折叠规则、std::move 与 std::forward 的语义差异、RVO/NRVO 的拷贝省略保证,以及 const 成员、noexcept 缺失、返回局部变量等常见移动陷阱,并给出可编译的实测代码。

8 分钟阅读
C++ 性能优化
cpp

C++ 模糊测试与覆盖率:libFuzzer、AFL++ 与 Sanitizer

手写单元测试只能覆盖你想到的输入,而内存安全漏洞几乎总出现在你没想到的那一分支。模糊测试用覆盖率反馈自动生成输入,配合 ASan/UBSan/MSan 能在几小时内挖出人工测试数月都发现不了的崩溃。本文从 libFuzzer 的 fuzz target 编写讲起,对比 AFL++ 的插桩模式与语料管理,系统梳理 Sanitizer 的组合策略、gcov 与 llvm-cov 的覆盖率度量方法,并给出可落地的 CI 流水线设计。

8 分钟阅读
C++ 测试 模糊测试
cpp

C++ 无锁数据结构:栈、队列与安全内存回收

互斥锁在高竞争下会引发上下文切换与优先级反转,无锁数据结构用 CAS 等原子原语把同步下沉到硬件层面。本文从原子原语与 CAS 循环讲起,完整实现无锁栈与 Michael-Scott 队列,剖析 ABA 问题的成因与带标记指针的解法,重点讨论无锁编程真正的难点——内存回收,对比 hazard pointer、RCU 与 epoch-based reclamation 三种方案,给出内存序选型清单与压测验证方法。

8 分钟阅读
C++ 无锁编程 并发