推 VictorTom:l大眼睛也好利....Orz 10/29 11:00
※ 引述《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