作者littleshan (我要加入剑道社!)
看板C_and_CPP
标题Re: [问题] 二维阵列记忆体配置及回收
时间Thu Oct 29 10:58:11 2009
※ 引述《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
1F:推 VictorTom:l大眼睛也好利....Orz 10/29 11:00