指针 / 智能指针 / 编程语言 · 2023年 10月 10日 0

智能指针

55 次浏览

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解决循环引用。