说说C++中智能指针和指针的区别是什么?
1.智能指针
如果在程序中使用new从堆(自由存储区)分配内存,等到不需要时,应使用delete将其释放。
C++引用了智能指针auto_ptr,以帮助自动完成这个过程。随后的编程体验(尤其是使用STL)表明,需要有更精致的机制。
基于程序员的编程体验和BOOST库提供的解决方案,
“C++11摒弃了auto_ptr,
并新增了三种智能指针:unique_ptr、shared_ptr和weak_ptr”。
所有新增的智能指针都能与STL容器和移动语义协同工作。
2.指针
C语言规定所有变量在使用前必须先定义,指定其类型,并按此分配内存单元。指针变量不同于整型变量和其他类型的变量,它是专门用来存放地址的,所以必须将它定义为“指针类型”。
3.智能指针和普通指针的区别
智能指针和普通指针的区别在于
智能指针实际上是对普通指针加了一层封装机制,区别是它负责自动释放所指的对象,
这样的一层封装机制的目的是为了使得智能指针可以“方便的管理”一个对象的生命期。