news 2026/4/3 3:39:38

C++ 资源管理体系:RAII、智能指针,以及为什么现代 C++ 几乎不再写 new/delete

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ 资源管理体系:RAII、智能指针,以及为什么现代 C++ 几乎不再写 new/delete

很多从 Java / Android 转到 C++ 的工程师,一开始都会卡在一个问题上:

没有 GC,C++ 到底怎么管资源?
为什么老代码到处 new/delete,而现代 C++ 却几乎不写了?

如果你已经理解了构造函数 / 析构函数,那这篇文章,会帮你把后面最关键的一整套体系一次性打通。

一、先给系统级结论

👉RAII 是思想
👉构造 / 析构是机制
👉智能指针是“内存资源的 RAII 化”
👉不写 new/delete 是现代 C++ 的工程结论

这四点,构成了现代 C++ 的资源管理体系

二、为什么 C++ 不靠 finally 管资源?

在 Java 里,释放资源通常是这样:

try (FileInputStream fis = new FileInputStream("a.txt")) { // use file }

或者:

FileInputStream fis = null; try { fis = new FileInputStream("a.txt"); } finally { if (fis != null) fis.close(); }

核心是:

👉你显式告诉语言:结束时要干什么。

2.1 C++ 的模式完全不同

void test() { File f("a.txt"); // use file } // 👈 自动 fclose

你没有写 finally。
但语言保证:

👉 离开作用域,一定调用析构函数。

而析构函数里:

~File() { fclose(fp_); }

于是形成模型:

进入作用域 → 构造函数(拿资源) 离开作用域 → 析构函数(放资源)

这套机制,叫做:

👉RAII(Resource Acquisition Is Initialization)
👉 资源获取即初始化

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/29 19:43:17

实测通义千问2.5-0.5B:树莓派上的AI助手效果如何?

实测通义千问2.5-0.5B:树莓派上的AI助手效果如何? 随着大模型技术的不断演进,边缘计算场景下的轻量化部署正成为新的技术焦点。在众多小型化语言模型中,通义千问2.5-0.5B-Instruct(Qwen2.5-0.5B-Instruct)…

作者头像 李华
网站建设 2026/3/28 22:55:02

【必收藏】2025年大模型工程化全景指南:从Chatbot到Agent的范式转变

文章解析了大模型从2023年聊天机器人时代到2025年智能体与系统工程的范式转变,提出现代AI应用四层架构:智能层(基础模型)、能力层(工具与技能)、连接层(MCP协议)和编排层(LangGraph/LangChain)。强调工程重心从随机模型调用转向确定性系统构建&#xff0…

作者头像 李华
网站建设 2026/3/19 15:57:52

PCB波峰焊缺陷之虚焊怎么优化?

波峰焊是 PCB 批量焊接的核心工艺之一,而虚焊是波峰焊里最让人头疼的缺陷之一 —— 焊点看似成型,实际内部接触不良,后续产品通电后极易出现断路、发热甚至烧毁的问题。今天就以科普问答的形式,跟大家拆解虚焊的成因和优化方案。​…

作者头像 李华
网站建设 2026/4/3 3:01:31

AI隐私卫士性能测试:大规模图片处理

AI隐私卫士性能测试:大规模图片处理 1. 背景与需求分析 随着社交媒体和数字影像的普及,个人隐私保护问题日益突出。在公共平台发布照片时,人脸信息泄露已成为不可忽视的安全隐患。尤其在多人合照、会议记录、街拍等场景中,未经脱…

作者头像 李华
网站建设 2026/3/28 6:20:59

AI人脸隐私卫士资源占用分析:低功耗运行实测报告

AI人脸隐私卫士资源占用分析:低功耗运行实测报告 1. 背景与需求分析 随着社交媒体和智能设备的普及,个人图像数据的传播速度空前加快。一张包含多人的合照在未经处理的情况下上传至网络,极有可能泄露他人面部隐私,甚至被用于非法…

作者头像 李华