智能指针(C++11)

在C++中我们为了避免内存泄漏而引入的智能指针

因为在C++中我们频繁使用堆内存,但是堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。我们使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题,使用智能指针能更好的管理堆内存。实际上我们这个智能指针即对象,因为对象在程序结束时会自动调用其析构,就不会发生内存泄漏了,这也是我们实现智能指针一个重要的基础思想。

对智能指针的描述

  • 智能指针是对普通指针用面向对象的类进行的一个封装,这使得智能指针实质是一个对象,行为表现的却像一个指针
  • 智能指针的智能就在于它能够在适当的时机安全的帮助你释放内存
  • 智能指针主要是运用了RAII技术(也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象)

1:auto_ptr

auto_ptr是C++98标准化引入的,auto_ptr十分简单,但使用起来却到处是坑,所以不提倡大家使用,C++11已放弃该关键字。低版本的VS并没有将其加入标准库。

模拟代码如下:

猜你喜欢

转载自blog.csdn.net/Eunice_fan1207/article/details/82948679