標籤:

寫c++好久不用new了,這是好的習慣嗎?

本人在用到開源pcl庫的時候,跟最他的代碼庫風格,基本都在用shared_ptr,數組直接用vector之類的代替,好久沒有在new開闢空間了,當然程序崩潰的情況也減少了很多,想知道這是好的習慣嗎,


用std::shared_ptr的同時不要忘記std::unique_ptr,用std::vector的時候不要忘記std::array,你避免new的動機和方式都是合理的。

關於性能問題不要過度憂慮,大多數時候這樣的組件不會比手動展開的代碼有多餘開銷。當然也不是沒有例外,比如std::shared_ptr的類型擦除和原子操作你未必會依賴到。


Scott Meyers 的 《Effective modern C++》

Item 21: Prefer std::make_unique and std::make_shared to direct use of new.

C++11 之後各種優化基本都指向了這一點

順便炫耀一下和大神的合影


我突然發現我寫的好多小程序里沒有用delete!!!嚇得一身冷汗,然後仔細想了想,我好想也沒怎麼用過new。

自從有了智能指針之後,raw pointer都用的很少了,偶爾忘記delete也沒太大影響吧。而且數組也好久沒用過了,有vector之後什麼都不用擔心,用起來多棒!


下意識里一直避免用new


當然,new 就交給庫作者們去用就好啦,哈哈哈

ps,直接用 new 擼代碼很難做到異常安全吧


用少許性能換開發效率與穩定性在大多數情況下(非性能敏感)都靠譜。定長數組用std::array更好。


無所謂好壞吧,使用shared_ptr& obj(new TYPE())的好處是IDE可以給出構造函數參數相關的智能提示,安全性和性能上的差別應該不大。


我們項目也是,整套代碼沒任何一個new/delete!為了提升性能,盡量用引用傳遞智能指針本身。


推薦閱讀:

Git筆記——基本功能(上)

TAG:編程 | C | C11 |