寫c++好久不用new了,這是好的習慣嗎?
01-28
本人在用到開源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&
我們項目也是,整套代碼沒任何一個new/delete!為了提升性能,盡量用引用傳遞智能指針本身。
推薦閱讀: