Re: [問題] 二維陣列記憶體配置及回收
※ 引述《littleshan (我要加入劍道社!)》之銘言:
: ※ 引述《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 來存字串
: 寫起來也比較簡單
在請教各位一個問題,我把class atdf_header宣告成全域變數提供給多個函式使用時
在解構的時候也出像類似問題耶,這該如何解決?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.210.112.66
推
11/09 18:16, , 1F
11/09 18:16, 1F
推
11/09 20:32, , 2F
11/09 20:32, 2F
→
11/10 09:05, , 3F
11/10 09:05, 3F
→
11/10 09:06, , 4F
11/10 09:06, 4F
→
11/10 09:13, , 5F
11/10 09:13, 5F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章