Boost学习笔记-内存管理之smart_ptr

一、

对于c/c++程序员来说,内存管理是个非常重要且头疼的问题。对指针的使用不当很容易造成内存泄露、“野”指针以及访问越界等问题。但是在Java,c#中不会存在这些问题,因为他们有垃圾回收机制。

二、

C++程序通常采用RAII机制进行内存资源管理,即资源获取即初始化(Resource Acquisition Is Initialiazation),在使用资源的类的构造函数中申请资源,使用完后,在析构函数中释放资源。

使用声明方式的对象是在栈上创建的,当离开作用域后对象会自动销毁从而调用析构函数释放资源;

使用new方式创建的对象是在堆上的,它的析构函数不会自动调用,程序员必须使用delete操作符销毁它才能释放资源,如果忘记使用delete就会存在内存泄露的问题。

三、

智能指针的提出可以在退出作用域时--不管是正常流程离开或是异常离开--总调用delete来析构在堆上动态分配的对象资源。

在c++98标准中的智能指针是auto_ptr,它部分解决了获取资源自动释放的问题,但是在c++11标准中该指针已经声明为废弃,现在应该使用新的智能指针unique_ptr。

c++11标准中提供的智能指针正式基于boost.smart_ptr库的。boost.smart_ptr库中提供了六种智能指针,包括shared_ptr,weak_ptr,scoped_ptr,scoped_array,shared_array和intrusive_ptr。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值