Re: [問題] 二維陣列記憶體配置及回收

看板C_and_CPP (C/C++)作者 (我要加入劍道社!)時間16年前 (2009/10/29 10:58), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/6 (看更多)
※ 引述《kyokb (傻傻)》之銘言: : atdf_header::atdf_header() : { : /****** FAR dynamic memory allocation ******/ : REC_FAR=new char*[FAR_SIZE]; : for(int i=0;i<FAR_SIZE;i++) : REC_FAR[i] = new char[STRLENGTH]; 上面這行讓 REC_FAR[i] 指向一塊 new 得到的記憶體空間 : for(int i=0;i<FAR_SIZE;i++) : *(REC_FAR+i)=""; 然後這行讓 REC_FAR[i] 指向另一塊空字串 本來由 new 得到的記憶體就 leak 了 : atdf_header::~atdf_header() : { : /********* FAR free memory*********/ : for(int i=0;i<FAR_SIZE;i++) : delete [] REC_FAR[i]; 這邊你 delete 掉的並不是 new 得到的記憶體 而是空字串 因此造成錯誤 所以你的問題出在 你用等號只會複製字串的位址 而不是複製字串的內容 在 C++ 中建議改用 string 來存字串 寫起來也比較簡單 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.29.108

10/29 11:00, , 1F
l大眼睛也好利....Orz
10/29 11:00, 1F
文章代碼(AID): #1AwGJ7Db (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AwGJ7Db (C_and_CPP)