desyang

C++ 智能指针实战:用 weak_ptr 破解 shared_ptr 循环引用导致的内存泄漏

在开发一个基于 Reactor 模式的 C++ 网络库时,我遇到了一个经典的内存管理难题:对象无法被析构,导致文件描述符(fd)泄露和内存持续增长。经过一番调试,最终发现罪魁祸首是 std::shared_ptr 的循环引用,而解决方案正是 C++11 引入的另一个智能指针——std::weak_ptr。 今天,我想和大家分享这次踩坑与填坑的完整过程,希望能帮助正在学习或使用 C++ 智能...

unique_ptr自定义删除器

unique_ptr 自定义删除器:从入门到精通 在 C++11 引入的智能指针中,std::unique_ptr 因其高效的性能(零开销抽象)和明确的独占所有权语义而备受推崇。默认情况下,unique_ptr 会使用 delete 运算符来释放资源。然而,在实际开发中,我们管理的资源往往不仅仅是堆内存,还可能是文件句柄、网络连接、数据库连接或操作系统特定的句柄。这时,默认的 delete...

C++设计模式实战:掌握最核心的7种设计模式"

在软件工程中,虽然《设计模式》(GoF)一书列出了23种模式,但在实际开发中,最常用、最核心的通常只有7-8种。 掌握这几种模式,能解决80%以上的常见架构问题。本文将介绍一个C++设计模式实战项目,帮助你深入理解这些核心设计模式。 项目链接:design-patterns-cpp 项目简介 这是一个专注于C++设计模式实现的项目,包含了最常用的设计模式的实际代码示例。每个模式都配有...

解决校园网下 Git Push 失败:从 SSH 被拒到 HTTPS 证书信任的完整实践

背景:被校园网“劝退”的 GitHub 之旅 作为一名开发者,长期以来受限于校园网的网络环境,我在访问 GitHub 时常常遇到连接超时、克隆失败等问题。为了规避这些麻烦,我不得不将许多项目托管在 Gitee(码云)上。虽然 Gitee 在国内速度飞快,但失去了 GitHub 庞大的开源生态和国际交流机会,始终是一种遗憾。 最近,我尝试重新将工作流迁移回 GitHub,却在第一步就遭遇了...