当前位置: 首页 > news >正文

智能指针 与 原始指针

int *a 定义的是一个“原始指针”(Raw Pointer)。

在底层开发中,原始指针就像是一把没有保险开关的剃刀:它功能强大,但如果你忘了收起来(释放内存),或者用完了没放稳(悬空指针),它就会让你的程序“鲜血淋漓”(内存泄漏或崩溃)。


1. 什么是智能指针 (Smart Pointer)?

智能指针是一个封装了原始指针的 C++ 类对象。它利用了 RAII 机制:

  • 构造时: 接管一个原始指针。
  • 析构时: 当智能指针对象本身离开作用域时,它的析构函数会自动调用 delete,把关联的内存还给系统。

你可以把它理解为一个带管家的指针。你只需要负责用,管家负责最后打扫战场。


2. 原始指针 int *a 的风险

当你写下 int *a = new int(10); 时,你面临三个经典陷阱:

  1. 忘记释放: 如果不写 delete a;,内存就永远丢了(内存泄漏)。
  2. 二次释放: 如果不小心 delete 了两次,程序会直接崩溃。
  3. 悬空指针: delete 之后,a 依然指向那个地址,如果你再访问它,就会发生不可预知的错误。

3. C++ 中最常用的三种“智能管家”

在现代 C++(C++11 及以后)中,我们几乎不再手动写 delete,而是使用以下三种工具:

A. std::unique_ptr(独占锁)

它是最常用的。同一时间只能有一个 unique_ptr 拥有这块内存。

  • 场景: “这是我的,谁也别想碰,我死了内存就销毁。”
  • 开销: 几乎为零。

B. std::shared_ptr(共享锁)

它内部维护一个引用计数

  • 机制: 每多一个指针指向这块内存,计数加 1;一个指针销毁,计数减 1。
  • 销毁时机: 当计数变为 0 时,内存才会被释放。
  • 场景: 多个对象需要共享同一份数据。

C. std::weak_ptr(旁观者)

它是 shared_ptr 的辅助,不增加引用计数。

  • 场景: 用来解决“循环引用”导致内存无法释放的问题。

4. 代码对比:手动 vs 自动

原始指针(危险):

void risky() {int* a = new int(10);if (some_error) return; // 糟糕!如果报错退出了,a 指向的内存就泄露了delete a;
}

智能指针(安全):

#include <memory>void safe() {std::unique_ptr<int> a = std::make_unique<int>(10);// 哪怕这里中途 return 或者抛出异常// a 会在退出函数时自动析构,内存自动释放。
} 

总结

  • int *a原始指针,需要手动管理,容易出错。
  • 智能指针是 RAII 在内存管理上的具体实现,是 C++ 实现“资源自动回收”的核心。
http://www.jsqmd.com/news/408763/

相关文章:

  • 2026年鹿茸厂家最新推荐:鹿茸品牌哪个最好/鹿茸品牌哪个最正宗/鹿茸品牌排名/鹿茸哪个牌子最好/选择指南 - 优质品牌商家
  • 2026金丝楠木市场洞察:10/30公分核心规格选购逻辑与西南五大优质基地 - 深度智识库
  • 2026 学术写作神器盘点:口碑好到炸裂的论文写作软件品牌推荐
  • 2026最新石斛/燕窝/海参/鹿茸/滋补品供应链推荐:全链路布局,这家实力领跑 - 十大品牌榜
  • 2026年评价高的陈皮公司推荐:鹿茸牌子排行榜、陈皮品牌哪个最好、陈皮品牌哪个最正宗、陈皮品牌排名选择指南 - 优质品牌商家
  • 2026年全国液化工厂厂家哪家有实力?覆盖大中小规模 实力强 适配多场景液化需求 - 深度智识库
  • 2026郑州看儿童生长发育的医院选择参考 - 品牌排行榜
  • 储能电站远程监控科学运维系统方案
  • 2026年陕西西安视频剪辑培训机构哪家好?TOP5优质推荐含AI人工智能培训、数据分析培训 - 深度智识库
  • python 导入示例:from router.light import light,目录为什么用点,而不是像node那样使用斜杠
  • Olib 2.4.4/1.0.4 | 国内网可用的Zlib图书下载器免费开源
  • 一网打尽!成为黑客需要掌握哪些技术,黑客技术学习攻略
  • 年度战略规划模型:战略落地的全维度拆解
  • 携程任我行礼品卡回收五大核心注意事项 - 京顺回收
  • 哔哩哔哩概念版8.83.0 | 解锁视频的大会员画质看超清视频
  • 黑客最怕的事就是踩到蜜罐,蜜罐到底是什么?给你详细讲清楚!
  • 人才梯队怎么建?国企“十五五”人才规划实战指南
  • 常见错误 --- error: src refspec master does not match any
  • 【开题答辩全过程】以 惠农特色农产品社区团购小程序为例,包含答辩的问题和答案
  • cursor启动设置
  • 评论系统中评论盖楼设计和性能优化方案
  • 基于PLC的花样喷泉系统设计与实现
  • 无人机失效模式技术要点
  • 2026装配式民宿品牌推荐榜:成都景区规划推荐、成都木屋民宿公司、成都民宿规划设计、景区商业民宿规划设计选择指南 - 优质品牌商家
  • 2026年评价高的陈皮公司推荐:陈皮哪个牌子最好/陈皮哪个牌子最正宗/陈皮排名/陈皮牌子排名/陈皮牌子排行榜/选择指南 - 优质品牌商家
  • AI人工智能(十五)C# AI的智障行为http服务—东方仙盟练气期
  • 做盲盒小程序,如何少走弯路?
  • 汽车制造智能体:从技术概念到生产范式的深层变革
  • 2026美国移民公司哪家好?行业服务机构选择参考 - 品牌排行榜
  • 2026美国移民机构推荐:选择专业服务的参考指南 - 品牌排行榜