C++智能指针
std::shared_ptr
std::shared_ptr共享智能指针,可以支持多个智能指针共享一个对象实例。shared_ptr持有的实例会在下面场景下被销毁:
- 持有实例的最后一个shared_ptr被销毁;
- 持有实例的最后一个shared_ptr被另一个智能指针赋值,或者shared_ptr调用了reset();
使用方法:
1 | shared_ptr<User> sp1 = make_shared<User>(1, "sp1", "123456"); |
注意:不要使用裸指针来初始化智能指针,会导致多次释放内存造成崩溃:
1 | void test() { |
当test()函数退出时,p2会先调用User析构,然后p1会再次调用User析构函数,同时两次释放同一块内存,就会导致程序出错。下面是正确的写法:
1 | void test() { |