智能指针(一介绍)

C++之智能指针(一)


问题:
1、智能指针是什么?它解决了什么问题?
智能指针也是指针的一种,但是它比一般的指针功能要强大一些。众所周知,如果用new来动态开辟内存时,它和delete是不可分开的,必须配对使用,new出来的是一段空间的首地址,我们需要用一个指针来接收这个地址,使用完之后,再通过delete去释放这个指针所指向的内存,如此才能保证内存不会造成内存泄露。但是、但是我们如果在复杂的程序中多次使用new来开辟空间的话,在后期进行delete难免会造成混乱,如果不细心,甚至有可能忘记delete。为了避免这种情况的发生,就有了智能指针,在使用智能指针进行空间开辟时,不需要再手动写delete,后期智能指针会自动释放所指向的空间。

2、智能指针的实现机制是什么?
RAII:使用面向对象的机制做到资源自动释放.
RAII是Resource Acquisition Is Initialization的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。
智能指针就是基于RAII实现
3、常见的智能指针有哪些?
常见的智能指针有共享指针shared_ptr,独享指针unique_ptr,弱指针weak_ptr,此外还有auto_ptr(逐渐被unique_ptr代替)


版权声明:本文为qq_54669536原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。