現代c++內存管理的方式有哪些?
01-05
cocos2d-x從cocoa那裡搬來的autorelease什麼鬼的,應該不是現代c++下內存管理的最佳實踐了吧?什麼RAII的,真的實用嗎?現代的c++內存管理有哪些常見的方式呢?樓主最近要寫個2D圖形的玩意,對象一多還真不知道怎麼管才是最好的了,還請各位大俠賜教。
這有個專題http://cplusplus.wikidot.com/cn:memory-management
大家不要見笑,局部需要大內存,我都是 std::vector 代替 malloc / free.
C++11已經可以將所有的資源管理歸結於:unique_ptr和shared_ptr,shared_ptr在不考慮效率的前提下完全可以替代unique_ptr,unique_ptr幾乎是0成本.
其實資源管理絕大多數都發生在局部,這時候當然使用unique_ptr,善用需要傳遞函數對象的重載,為了代碼簡潔,善用decltype關鍵字,類內部能隱藏的成員變數也應使用unique_ptr.其他情況使用shared_ptr.咋沒人答捏。
1. RAII 很實用啊,一直在用啊,標準都在用啊,&內存管理是 malloc/free,資源管理是 智能指針和 RAII
raii非常有用,c++程序快而穩定的運行,raii功不可沒。資源管理類和智能指針都是內存管理神器,很多第三方大型庫都用這些技術來管理內存。如果是非常專業的項目,一般會使用各種高性能內存池,但是本質思想沒有太大變化。
延遲刪除還是有用的,本身autorelease沒啥問題,但cocos2dx沒提供對應的智能指針著實不應該。就憑這一點,觸控就不應該上市。
大家回答得很多了,再補充個,allocator
推薦閱讀:
※Firefox和Chrome相比是否更適合小內存用戶?
※c++字元串拷貝和內存問題?
※比較有效的內存清理軟體?高手們都是怎麼手動優化系統和內存的?
※Windows10 TH2中引入的內存壓縮技術是什麼原理?
※Unable to create new native thread 的本質是什麼?


