C++

智能指针与RAII

30分钟 0次学习

裸指针三大问题:忘记delete→内存泄漏,所有权混乱→谁该释放?悬空指针→delete后继续使用。

unique_ptr(独占所有权): auto p=make_unique<int>(42); 离开作用域自动delete,不可拷贝。

shared_ptr(共享所有权): 引用计数。每拷贝+1,每销毁-1,到0释放。auto sp1=make_shared<int>(10);

weak_ptr(弱引用): 解决循环引用问题。不增加引用计数。

原则:优先栈分配,堆分配用智能指针,尽量不用new/delete。