CString内存泄露的解决办法

CString内存泄露的解决办法 收藏 8W~9tE+L9k-dI St
引文:在多数情况下,比较简单的使用过程中,MFC的这个BUG不会发作,也就是不会有内存泄露。那什么时候CString会暴露出BUG那?U8N#Rwq
我以前出现错误的经验是:如果多次调用带有CString引用的参数的函数(形如:funstr(CString &str);这样的函数),在一定的时候(和字符串长度有关系),CString的内部引用记数器发生记数混乱,造成内存泄露。
_+^%bJc J8V,^a!dH8ZRgFJ
    应为vc6.0在CString类的包装上的“小问题”,CString的内存泄露问题就像一颗炸弹,埋伏在你的程序中,大家知道我们在编写程序的时候这个类定义的变量(对象)我们一般都不释放的,即使有的地方告诉我们使用releaseBuffer来释放,可这并不能解决问题,因为我们没有使用申请变量空间的办法,所以很多时候解决不了问题。c3P:v"m%oC

:\oD rMF     今天出现内存泄露的情况如下:
WA0zC qdy3cw R^
iMd4w%D    我在窗体类中定义了多个CString 类型的变量,然后使用ddx来交换变量,结果,程序运行完毕只有,我一调试,有内存泄露,费了一整天功夫,才找到解决办法。(头非说我用了new不可,要我使劲找,我很清除我没有用new)。 }4Wj?bE2TbG

Xs7trb|[vI    其实解决方法恒简单,就是在updatedata(false)之后,将变量赋值为空就可以了,具体的做法如下:
Hc2B k&l4t7_&R 8iv!] ^s"I
  CString m_XUN;
3Fj${tT"P^
c`.zq3W9cv   m_XUN="";2Jq(o2N5?qU
yV)k? Gb
  m_XUN.Empty();//这一句话就可以了,费了我不少痛苦的表情c:@z;s)K{ Jr
w"{(^!euS^ pd?
//晕倒,在debug下运行的程序没有问题,但在release下当退出的时候出现了问题,找来找去还是对CString赋值
Us H(i:Yy^"X ib6`
w`8t4W5F[ 的问题,现在正解决中.... E:c$t AB
#W$Zo9D.Z
查原因到4点半,终于找到了原因,另开一贴说明。

转载于:https://www.cnblogs.com/zhwl/archive/2012/11/09/2761971.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值