栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

使用C++11解决内存泄露--智能指针

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用C++11解决内存泄露--智能指针

众所周知,C#和java中不需要开发人员自己释放内存,对象引用计数为零后.Net和Java虚拟机会对对象进行自动回收,从而防止内存泄露;但是C++语言中,在堆上分配的内存必须自己去管理,不用的时候要自己释放,如果管理不当就可能会出现内存泄露。

C++11提供了智能指针,使用智能指针后不需要用户自己释放内存空间,一旦使用时对象超出了自己的生命周期,就会进行自动释放,从而有效解决了内存泄露的问题。

在实际编程时,有三种智能指针可供使用,分别是:std::shared_ptr、std::unique_ptr和std::weak_ptr。

1 共享智能指针:std::shared_ptr

std::share_ptr指针的每一个拷贝都指向同一个对象,只有在引用计数为零时内存才会被释放。

指针声明原型为:

template  class shared_ptr;

1.1 std::shared_ptr的用法

std::shared_ptr指针可以有三种方法进行初始化,分别是构造函数、辅助函数以及reset方法进行初始化化,代码如下所示:

int main () {
    std::shared_ptr sp;  sp.reset (new int);       //reset函数初始化  *sp=10;  std::cout << *sp << 'n';
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291694.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号