用多少眼泪才能让你相信 发表于 2022-8-12 02:07:34

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]
查看完整版本: c++中智能指针的使用,个人总结