你的 C++ 服务 stop() 顺序很可能有问题
Created|文章
一、一个问题你的服务有没有这种情况:跑起来一切正常,Ctrl+C 一按就段错误?偶尔能干净退出,偶尔 core dump?日志里最后几行是乱序的,有时候甚至看不到 fatal 信息? 如果有,恭喜你——你的 stop() 顺序大概率是错的。 二、一个真实案例一个基于 MQTT 的无人机控制服务(C++、Linux、多线程)。运行态一切完美:消息收发正常,日志正常,CPU 和内存正常。但只要退出程序,Valgrind 就报 112 个 use-after-free 错误。 调用链长这样: 123Logger::workerThread() // 后台线程,处理日志队列 → LogPublisher::publish() // 封装日志为 protobuf,调用 MQTT 发送 → MqttClient::publish() // 实际发送 MQTT 消息 原始的 stop(): 1234567void SystemFactory::stop(){ ...
C++ 智能指针之争:问题不是"用哪个",而是"谁拥有这个对象"
Created|文章
一、"C++ 的魅力在于手动控制内存""智能指针是黑盒,C++ 的魅力在于可以直接控制内存的分配和释放。" 这句话你一定在某个技术群、某条知乎评论、或者某次 code review 中看到过。说出这句话的人,通常带着一种"真正的 C++ 程序员不用智能指针"的骄傲。 但这句话把两个不同的东西混为一谈了:"控制力"和"手动执行"。 真正的控制力,是你知道每个对象归谁管、什么时候销毁。至于销毁的动作是谁执行——你的右手敲下 delete,还是 unique_ptr 的析构函数——那只是实现细节。 二、同一个项目,两种裸指针在我最近修复的一个 MQTT 控制服务里,同一个代码库中同时存在两种裸指针用法:一种导致了真实的 bug,另一种是最佳实践。差别不在"裸不裸",在于"所有权清不清晰"。 案例 A:脆弱的裸指针AisNmeaParseApi.cpp 中解析 AIS...


Recent Posts
Categories
- C++85
- C-Code23
- CMake3
- CS501
- Computer-Networking40
- Computer-Organization1
- Data Structures and Algorithms1
- Data-Structures6
- Essay1
- Essays4
- Foundational Syntax and Core Concepts4
- Git3
- HTTP2
- Interview7
- Lcov2
- Leetcode147
- Linux40
- Linux Internals2
- List1
- Lists1
- MQTT8
- MYSQL3
- MySQL1
- Operating-Systems7
- PKGCONF1
- Python63
- Redis14
- STL3
- UML1
- XML1
- lock1
- practice problems1
- 代码提交1
- 函数模板2
- 前端6
- 寓言故事7
- 工厂模式2
- 文章27
- 类图1
- 编译1
- 设计模式8
- 链表1
Archives
- 2026年06月 13
- 2026年05月 8
- 2026年04月 7
- 2026年03月 7
- 2026年02月 3
- 2026年01月 5
- 2025年12月 11
- 2025年11月 6
- 2025年10月 5
- 2025年09月 15
- 2025年08月 5
- 2025年07月 5
- 2025年06月 5
- 2025年05月 6
- 2025年04月 10
- 2025年03月 5
- 2025年02月 8
- 2025年01月 10
- 2024年12月 10
- 2024年11月 8
- 2024年10月 12
- 2024年09月 11
- 2024年08月 11
- 2024年07月 9
- 2024年06月 9
- 2024年05月 11
- 2024年04月 20
- 2024年03月 19
- 2024年02月 23
- 2024年01月 27
- 2023年12月 13
- 2023年11月 15
- 2023年10月 14
- 2023年09月 14
- 2023年08月 13
- 2023年07月 14
- 2023年06月 12
- 2023年05月 17
- 2023年04月 13
- 2023年03月 14
- 2023年02月 13
- 2023年01月 14
- 2022年12月 6
- 2022年11月 11
- 2022年10月 7
- 2022年09月 4
- 2022年08月 3
- 2022年07月 5
- 2022年06月 7
- 2022年05月 4
- 2022年04月 4
- 2022年03月 4
- 2022年02月 5
- 2022年01月 5
Website Info
Article Count :
535
Runtime :
Total Word Count :
927.6k
Last Update :