C语言完全靠人工,C#/Java/Python等更高级语言有GC,只有C++还在研究复杂的指针技术。这些指针技术听起来似乎已经没太大意义,但对于C++语言而言,意义深远,因为它真的再让程序员控制内存和对象释放。C++11引入了unique_ptr、shared_ptr和weak_ptr.
- 只想要一个对象,用unique_ptr(取代C++98的auto_ptr, auto_ptr在C++11/14弃用,C++17被移除).
- 共享对象,用shared_ptr,根据最终引用计数决定对象释放与否。
- 不同的shared_ptr对象有依赖引用,最终无法释放,用weak_ptr解决循环引用。
