• 何时使用智能指针,何时使用原始指针


    智能指针:责对象生命周期的管理;所以生命期对象全都由unique_ptr和shared_ptr来管理。

    原始指针:不负责对象生命周期管理;所以涉及对象的使用而不涉及对象生命周期的管理时,均通过原始指针来使用。


    智能指针和原始指针进行转换和传参时可能存在被意外释放的问题,使用时需要注意。比如,

    • 对智能指针A获取原始指针a,传入某函数,函数内重新用a包装出智能指针B,那么函数退出B被销毁时,a所指资源已被释放,原智能指针A无法正常使用。(如果资源在栈上将导致程序崩溃)

    • 原始指针a指向某资源,它被包装成智能指针A后传给某函数,函数结束时A被销毁,所指向的资源也被释放,此时a也无法再使用。


    所以,

    对于一个接受原始指针的函数(或代码块),切记不可再将传入的原始指针包装为智能指针。

    对于一个接受智能指针的函数(或代码块),切记不要直接将原始指针就地包装传入,而应该一开始就使用智能指针而非原始指针管理对象。

  • 相关阅读:
    plink:将bed文件转化为ped,map文件
    linux下查找某文件关键字(grep 函数)
    genetic model
    linux下设置默认路径
    vi怎么查找关键字
    有意思的undefined columns selected,源于read.table和read.csv
    练习2-2
    练习2-1
    排序算法之堆排序
    Java实现二叉树先序,中序,后序,层次遍历
  • 原文地址:https://www.cnblogs.com/dylanchu/p/12318189.html
Copyright © 2020-2023  润新知