看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
VictorTom:l大眼睛也好利....Orz 10/29 11:00