在一个头文件a.h中定义了 
CString hu; 
在头文件b.h中定义了 
extern CString hu; 在c.h文件中定义 
#include "a.h" UINT ty(LPVOID pParam) 

for(int i=0;i <20;i++) 

aa+="dd";//执行文件退出关闭时,此句导致出错。出错提示为:File:dbgheap.c Line:1017。去掉这句就不会有出错提示。 } 
AfxMessageBox(aa,NULL,MB_OK); 
return 0; 

在d.cpp文件中调用 
void CTest3View::OnEDITvvv() 

// TODO: Add your command handler code here 
  AfxBeginThread(ty,this); 

在e.cpp文件中使用 
#include "b.h" 
在f.cpp文件中使用 
#include "b.h" 
只要运行调用CTest3View::OnEDITvvv()函数,程序退出时,会立即报错。 
我在e.cpp、f.cpp文件中都要用到hu保存全局结果,那怎么处理啊??? 

解决方案 »

  1.   

    建议将ty方法中运行前后进行保护,lock,unlock。多线程进行同一内存的写操作,不保护数据区域,肯定有问题。
      

  2.   

    基本上同意楼上, 顺便分析下cstring, 它的实现是引用计数机制, 因此你即使用=赋值,也解决不了什么问题呀! 
      

  3.   

    只起了一个线程,不存在多线程进行同一内存的写操作,不是这个原因造成的。
    是不是在不同cpp文件中引用#include "b.h导致的?
      

  4.   

    extern CString hu;  这个最好写进预编译头文件呀!
      

  5.   

    aa+="dd";//执行文件退出关闭时,此句导致出错。出错提示为:File:dbgheap.c Line:1017。去掉这句就不会有出错提示。我真没看到你在哪里定义了aa?可能你在其它地方定义了吧。