亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

指針,智能指針或共享指針?

指針,智能指針或共享指針?

C++
Smart貓小萌 2019-11-22 11:11:08
我正在使用普通指針進行編程,但是我聽說過諸如Boost之類的實現智能指針的庫。我還看到,在Ogre3D渲染引擎中,共享指針得到了廣泛的使用。這三個之間到底有什么區別,我應該堅持只使用它們中的一種嗎?
查看完整描述

3 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

術語“智能指針” 包括共享指針,自動指針,鎖定指針等。您的意思是說自動指針(更模糊地稱為“擁有指針”),而不是智能指針。

啞指針(T *)永遠不是最佳解決方案。它們使您可以進行顯式的內存管理,這是冗長的,容易出錯的,有時幾乎是不可能的。但更重要的是,它們并不表示您的意圖。

自動指針將銷毀的指針刪除。對于數組,更喜歡像vector和deque這樣的封裝。對于其他對象,很少需要將它們存儲在堆上-只需使用局部變量和對象組合即可。返回堆指針的函數仍然需要自動指針,例如工廠和多態返回。

當指向該指針的最后一個共享指針被破壞時,共享指針將刪除該指針。當您需要一個不費吹灰之力的開放式存儲方案時,此功能很有用,該方案的預期壽命和所有權可能會因情況而異。由于需要保留(原子)計數器,因此它們比自動指針要慢一些。有人開玩笑地說,共享指針適用于無法設計系統的人-自行判斷。

對于共享指針的必要替代,也可以查找弱指針。


查看完整回答
反對 回復 2019-11-22
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

智能指針在超出范圍后會自行清理(從而消除了對大多數內存泄漏的擔心)。共享指針是智能指針,它保留該指針存在多少個實例的計數,并且僅在計數達到零時才清理內存。通常,僅使用共享指針(但請確保使用正確的指針-數組使用不同的指針)。他們與RAII有很多關系。


查看完整回答
反對 回復 2019-11-22
  • 3 回答
  • 0 關注
  • 614 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號