CString多线程内存泄露疑惑

来源:互联网 发布:php基础教程 第5版 pdf 编辑:程序博客网 时间:2024/05/18 22:11

今天在调试程序时候,vld检查到CString的内存泄露,总过有6处。多发生在Format调用处,共同点是在程序的一个线程中。

线程创建时传入的参数是CString的地址指针,开始以为是指针引用有问题,于是开始在网上搜。

贴1:http://blog.csdn.net/red_hope/article/details/1729937。作者的经验是:针对vc6.0,如果多次调用带有CString引用的参数的函数(形如:funstr(CString &str);这样的函数),在一定的时候(和字符串长度有关系),CString的内部引用记数器发生记数混乱,造成内存泄露。

贴2:http://www.cppblog.com/alantop/archive/2008/07/10/55786.html。这里面说CString存在多线程安全问题,解决方法略显高端,lz并未说清楚情况,评论中提到线程是否完全退出。

贴3:http://hi.baidu.com/0_00_000/item/5f910e483c30e42810ee1e05。供参考


针对以上情况,进行测试,本人的环境是VS10,该线程在程序中是whilie循环,不会结束。

1、将线程中代码放入主程序中,程序完成,无泄漏。确认代码问题。

2、在线程中注释掉while等操作,程序结束,无泄漏。确认为线程未退出造成。


不同编译环境,MFC版本不同,请参考:http://blog.csdn.net/felomeng/article/details/6308731,VS版本与ATL、MFC版本对比。



0 0
原创粉丝点击