[STL ] Vector 裡面的成員是指 標釋放的問題

看板C_and_CPP作者 (冰開水)時間16年前 (2009/11/29 20:32), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串1/2 (看更多)
最近常再用STL寫一些東西,雖然這個問題有點蠢 但是還是想問一下 ex: class test{ public: test(int data){ m_data = data; } ~test(); protected: int m_data; }; Vector<test*> m_p_data; m_p_data.resize(10); // reserve 10 data member for(int i = 0; i < m_p_data.size(); i++) m_p_data[i] = new test(i); 問題來了,你知道 我知道 獨眼龍也知道 STL有一個clear的function 可以清空 它生出來的data,但是今天他的data member全都是指標 指向某一塊記憶體 那我今天如果只用clear而不對每一個我各自new出的東西做free的動作 是不是會造成memory leakage ?... (其實我是覺得會啦...clear 應該沒那麼強.. 還自動幫我把我new的東西free掉...) 請各為指點迷津 謝謝 ... --               幹你媽的快來收集我阿!        ─ ≡ ◤ ◥ ◤        ─ ⊙ ⊙ ─        ─ ○ ─        -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.61.124 ※ 編輯: KVL 來自: 219.84.61.124 (11/29 20:33)

11/29 20:38, , 1F
當然要自己一個一個 free 掉
11/29 20:38, 1F

11/29 21:03, , 2F
感謝 我也覺得需要自己手動free 只是一直希望聽到有人說 XD
11/29 21:03, 2F

11/29 21:12, , 3F
寫成class 用解構子XD
11/29 21:12, 3F

11/29 23:35, , 4F
smart pointer
11/29 23:35, 4F

11/29 23:40, , 5F
我是在linux下的用的 smart pointer 應該是CComPtr吧...
11/29 23:40, 5F

11/30 00:44, , 6F
用tr1::shared_ptr<>就好啦
11/30 00:44, 6F

11/30 01:05, , 7F
這個c++ primer有專節討論說 好像有提3種解法 手邊沒書
11/30 01:05, 7F
文章代碼(AID): #1B4cdnDn (C_and_CPP)
文章代碼(AID): #1B4cdnDn (C_and_CPP)