news 2026/8/7 12:55:57

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/7/14 19:51:55

AI人脸隐私卫士部署卡顿?CPU推理优化实战解决方案

AI人脸隐私卫士部署卡顿?CPU推理优化实战解决方案 1. 引言:AI人脸隐私卫士的现实挑战 随着数字内容的爆炸式增长,个人隐私保护已成为图像处理领域不可忽视的核心议题。尤其在社交媒体、公共监控、医疗影像等场景中,人脸信息的泄…

作者头像 李华
网站建设 2026/8/4 19:07:21

照片边缘人脸难检测?长焦模式开启详细步骤

照片边缘人脸难检测?长焦模式开启详细步骤 1. 背景与痛点:传统打码方案的局限性 在日常分享照片时,我们常常面临一个尴尬的问题:多人合照中,画面边缘或远处的人脸难以被准确识别和保护。尤其是在户外集体活动、会议合…

作者头像 李华
网站建设 2026/7/31 10:58:12

创意速成:用DIFY工作流10分钟打造产品原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个快速原型生成工具,用户输入产品创意描述后,10分钟内生成可交互的Web原型。要求支持多页面导航、基础UI组件和模拟数据,自动生成产品需求…

作者头像 李华
网站建设 2026/8/2 12:44:14

AI隐私保护实战:本地离线人脸打码解决方案

AI隐私保护实战:本地离线人脸打码解决方案 1. 引言:AI 人脸隐私卫士 - 智能自动打码 在社交媒体、云相册和数字办公日益普及的今天,个人图像数据的传播速度远超以往。一张包含多人的合照上传至公共平台,可能无意中暴露了他人的面…

作者头像 李华
网站建设 2026/7/31 8:45:37

SMUDebugTool完整指南:掌握AMD Ryzen硬件调试核心技术

SMUDebugTool完整指南:掌握AMD Ryzen硬件调试核心技术 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

作者头像 李华