智能指针与RAII
裸指针三大问题:忘记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。