C++ smart pointer
Jufeng Wu, 06 November 2019
在C++ 中,最討厭的大概就是忘記清掉記憶體空間,使得memory的使用越來越多,最後當機
在很多語言都有所謂的GC(garbage collection)的功能,唯獨C++要自己釋放
因此,在c++ 11 之後就有所謂的smart pointer可以使用
c++的smart pointer有三個
1.unique_ptr
2.shared_ptr
3.weak_ptr
unique_ptr的範例在此
基本上,unique_ptr只能夠產生一個指向一個物件,所以叫做unique ptr,這應該很好理解XD
此外,還有要注意的是,建立unique pinter的時候,有兩個方法,分別是make_unique
以及new
,make_unique要在c++14(包含)之後才會有
shared_ptr的範例在此
基本上,shared_ptr可以很多人同時指向
所以有一個方法為use_count
去看說到底有誰指向他
當然,生成的方式主要是make_shared
,這個和unique_ptr不一樣的是,在c++11就有make_shared了!
weak_ptr暫時還沒有寫範例QQ
小的會努力補齊全
weak_ptr主要用來指向shared_ptr
主要的用途是,當weak_ptr被釋放時,shared_ptr的counter,不會被-1
這樣的好處在於,有的時候在循環的況之下,如果使用shared_ptr而非weak_ptr,有可能會還在被指的東西不小心被釋放掉或是沒有被釋放
smart pointer 在ros2中的範例中常常被拿來使用
所以要學好,以免看不懂範例!