c++中智能指针的使用,个人总结
一、什么是智能指针一般来讲C++中对于指针指向的对象需要使用new主动分配堆空间,在使用结束后还需要主动调用delete释放这个堆空间。为了使得自动、异常安全的对象生存期管理可行,就出现了智能指针这个概念。简单来看智能指针是 RAII(Resource Acquisition Is Initialization,资源获取即初始化) 机制对普通指针进行的一层封装。这样使得智能指针的行为动作像一个指针,本质上却是一个对象,这样可以方便管理一个对象的生命周期。
智能指针作用总结:
[*]处理内存泄漏。
[*]处理空悬指针的问题。
[*]处理异常造成的内存泄露。
注:智能指针和原生指针不要混用,使用不当可能会导致程序异常;
二、智能指针有哪些
智能指针(动态内存管理)头文件
[*]std::unique_ptr:拥有独有对象所有权语义的智能指针(cplusplus,C++参考手册)
[*]std::shared_ptr:拥有共享对象所有权语义的智能指针(cplusplus,C++参考手册)
[*]std::week_ptr:到 std::shared_ptr 所管理对象的弱引用(cplusplus,C++参考手册)
[*]std::auto_ptr(C++11起弃用):拥有严格对象所有权语义的智能指针(cplusplus,C++参考手册)
三、独占式智能指针(std::unique_ptr)
1 class SmartPointer 2 { 3 public: 4 SmartPointer() 5 { 6 cout
页:
[1]