码迷,mamicode.com
首页 > 其他好文 > 详细

动态内存管理

时间:2018-02-25 17:26:03      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:内存泄漏   https   ref   nbsp   body   div   另一个   com   targe   

已经不用的内存,但没有释放,造成内存泄漏。内存已经释放,但是指向它的指针没有置空或销毁,造成空悬指针。

智能指针:指针变量销毁,它所指向的内存会自动释放。

unique_ptr是一种定义在<memory>中的智能指针(smart pointer)。它持有对对象的独有权——两个unique_ptr不能指向一个对象,不能进行复制操作只能进行移动操作。

unique_ptr在超出作用域,即以下情况时它指向的对象会被摧毁:
  • unique_ptr指向的对象被破坏
  • 对象通过operator=()或reset()被指定到另一个指针)
unique_ptr还可能没有对象,这种情况被称为empty。
例如:
std::unique_ptr<int>p1(new int(5));
std::unique_ptr<int>p2=p1;// 编译会出错
std::unique_ptr<int>p3=std::move(p1);// 转移所有权, 现在那块内存归p3所有, p1成为无效的针.
p3.reset();//释放内存.
p1.reset();//无效

unique_ptr的功能

  1. 不管是正常退出还是异常退出,均可通过保证删除为处理拥有动态寿命的和函数提供额外的保护;
  2. 将独有的持有动态寿命对象传递给函数;
  3. 从函数获取持有动态寿命对象的所有权
  4. 所有auto_ptr应该已经具有的功能                                                                                          

动态内存管理

标签:内存泄漏   https   ref   nbsp   body   div   另一个   com   targe   

原文地址:https://www.cnblogs.com/afreeman/p/8469501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!