Re: [問題] 二維陣列記憶體配置及回收
看板C_and_CPP (C/C++)作者littleshan (我要加入劍道社!)時間16年前 (2009/10/29 10:58)推噓1(1推 0噓 0→)留言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
10/29 11:00, 1F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章