智能指针
智能指针
-
指针
注1
管理的困境是什么-
资源释放了但是指针没有为空
-
野指针:野指针是指指向未知内存地址的指针,也就是没有初始化或者已经被释放的指针。使用野指针会导致程序崩溃、内存泄漏等严重问题。(单个指针)
-
指针悬挂:是指当指向的内存被释放或者销毁后,指针仍然指向该内存地址,此时使用该指针会导致未定义行为。指针悬挂通常是由于程序员未及时清除指针,或者指针被错误地释放导致的。(通常是多个指针指向同一个资源)
-
踩内存:踩内存指的是程序错误地访问了未分配给它的内存空间,通常会导致程序崩溃或不可预测的行为。(内存已经被其他地方占用,虽然确实是一个合法的内存)
-
-
没有释放资源产生内存泄漏(没有delete释放资源)
-
重复释放资源,引发coredump
-
-
怎么解决的指针管理的困境?
-
运用RAII思想:它利用了C++的对象生命周期和构造/析构函数来自动管理资源,避免了程序中因资源泄露而导致的安全隐患和资源浪费问题。
-
具体方法是将资源的分配和释放封装在一个对象的构造函数和析构函数中,对象的生命周期与资源的分配和释放相对应,确保了资源的正确释放。
-
-
-
智能指针的种类(智能指针是一种 C++ 的语言特性,其可以在一定程度上解决程序中内存泄漏和多次释放同一块内存等问题。)
- unique_ptr:独占式智能指针,只能有一个指针指向同一块内存,当指针被销毁时,内存也被自动释放。
- shared_ptr:共享式智能指针,多个指针可以指向同一块内存,内存会在最后一个指针被销毁时释放。
- 解决了指针悬挂
- weak_ptr:弱引用智能指针,是对 shared_ptr 的补充,可以观察 shared_ptr 是否被释放。(怎么解决weak_ptr循环引用问题)
- auto_ptr:C++11 之前的独占式智能指针,已被 unique_ptr 取代。
注1
在计算机程序中,指针(pointer)是一个变量,用来存储另一个变量的地址。我们可以通过指针来访问或修改对应地址上存储的值。
__EOF__

本文作者:Lachlan_Yang
本文链接:https://www.cnblogs.com/LaChlanYang/p/17218429.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/LaChlanYang/p/17218429.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!