使用智能指针的时候要注意,不要把一个临时变量的地址赋值给智能指针,会引起内存二次释放的问题
class Test{
};
void fun() {
Test t;
std::shared_ptr<Test> ptr;
ptr.reset(&t);
}
这样写的话,程序会崩溃,因为函数执行后临时变量t会被释放掉,ptr又会释放一次。
使用智能指针的时候要注意,不要把一个临时变量的地址赋值给智能指针,会引起内存二次释放的问题
class Test{
};
void fun() {
Test t;
std::shared_ptr<Test> ptr;
ptr.reset(&t);
}
这样写的话,程序会崩溃,因为函数执行后临时变量t会被释放掉,ptr又会释放一次。