智能指针和普通指针混用注意之一

经常在调用三方接口的时候,难免不混用智能指针和普通指针。

混用主要分为两类型:

把已有的普通指针交给智能指针管理

int* p_chamo;

std::shared_ptr p;
p.reset(p_chamo)

把已有智能指针管理的地址拿出来给其他程序用

std::shared_ptr p=std::make_shared(1);

int* p_chamo=p.get();

只要出现了这两种情况,就必须认为的关注两者的释放。

典型问题场景1:智能指针在花括号内定义

int* p_chamo;

if(true){
    std::shared_ptr p;
    p.reset(p_chamo)
}

典型问题场景2:普通指针在花括号内定义

std::shared_ptr p;

if(true){
    int p_chamo;
    p.reset(&p_chamo);
}

你可能感兴趣的:(应用开发)