CString在线程处理中,稍有处理不当,极易引起内存泄漏。
让我们来看一个例子:
在线程函数中使用如下代码
CString strstate;
strstate.Format("正在解密,请稍后... (共 %d 张地图)",p->m_countmap);可以看到非常简单,在debug下,很容易看到如下的内存泄漏。

怎么回事?
先把修改好的代码放上来
CWin32Heap stringHeap( HEAP_NO_SERIALIZE, 0, 0 );
CAtlStringMgr stringMgr( &stringHeap );
CString strstate(&stringMgr );
strstate.Format("正在解密,请稍后... (共 %d 张地图)",p->m_countmap);
本文通过一个具体的示例说明了在多线程环境下使用CString可能导致的内存泄漏问题,并提供了一种解决方法来确保线程安全。通过创建自定义堆和字符串管理器,可以有效地避免此类内存泄漏。
5937

被折叠的 条评论
为什么被折叠?



