因為智慧型指標是通過引用計數的方式來進行判斷何時進行析構的,
1)所以不要對含有智慧型指標的結構體進行memcpy,因為memcpy不會增加引用計數,從而導致錯誤;
2)不要對智慧型指標本身進行memcpy,同樣因為memcpy不會增加引用計數,從而導致錯誤;
3)如果結構體中放有智慧型指標,則注意不要使用memecpy等防止進行記憶體拷貝,如果要發生記憶體拷貝,就應該放普通指標;
結構體設計時就要考慮到該結構體被誰使用,有幾份等因素,來決定結構體中是否需要放結構體物件還是結構體指標,另外結構體中放指標時,盡量使用普通指標,便於維護;
結構體中,智慧型指標和普通指標可以並存;但是聯合體中就不能放智慧型指標了,因為智慧型指標是模板類,大小不是四個位元組,不好估計其大小。
智慧型指標注意事項
1 乙個裸得指標不要使用兩個shared ptr unique ptr 2 用weak ptr打破迴圈引用 3 當需要在類得內部介面中,需要將this作為智慧型指標使用,需要用該類派生自enable shared from this 4 使用share ptr作為函式介面時候,最好用 const s...
c shared ptr智慧型指標使用注意事項
shared ptr在boost中地位相當重要,其行為最接近原始指標,但又比指標更加安全,甚至還能提供基本的執行緒安全保證。它基本上解決了在使用c 開發過程中不可避免的使用指標而遇到的許多問題,常見的毫無疑問是記憶體洩漏和記憶體的提前釋放,還有一些關於指標記憶體申請而產生的異常問題等。而要想較好的使...
C 知識點36 使用智慧型指標的注意事項(下)
四 智慧型指標與容器 當把shared ptr物件放入乙個容器中時,會呼叫shared ptr的拷貝建構函式並且引用計數 1 因為用new test 初始化up時,需要將new test 隱式轉化為乙個unique ptr物件,需要呼叫unique ptr的建構函式,但是unique ptr的建構函...