我的程序中有几段类似这样的代码:
CString temp;
CString str;
for (int i=0;i<n;i++)
{
   temp.Format("%02x ",buf1[i]);
   str=str+temp;                   <<<--运行到此句出现异常
}程序在运行一段时间后,在两个CString相加的地方出现异常,Debug模式下程序进入tidtable.c中的
_CRTIMP PFLS_GETVALUE_FUNCTION __cdecl __set_flsgetvalue() 函数中出现异常,而在正常运行状态下,程序就会直接退出了,各位大侠,帮帮我吧

解决方案 »

  1.   

    格式化别用CString类型,这个貌似有些BUG
    用sprintf或者_snprintf
    用数组格式化,然后连接过去
      

  2.   

    具体点。
    把str付值情况写一下。
    str+=tmp;
      

  3.   

    从你进入得这个文件看(tidtable.c,从名字看是保存线程id得,一般在多线程环境种用),你得程序可能是多线程并发访问了一个全局变量,而又没有进行并发控制。你得程序是多线程访问了全局得CString对象吧?要加锁
      

  4.   

    那两个CString反复相加,反复重新分配内存空间会不会有问题呢?
      

  5.   

    是flsgetvalue还是tlsgetvalue还有,n是多少?两个CString到底是什么性质得变量,buf1呐?
      

  6.   

    对,我的是多线程,STR变量是一个APP的全局变量,的确没有加锁
      

  7.   

    是flsgetvalue,buf是我从socket上收到的数据,n是收到的数据长度
      

  8.   

    应该是tlsgetvalue吧,感觉flsgetvalue不像一个熟悉得函数
    至于buf1,如果不是unsigned char*类型得,你这样格式化是错误得,应该是
    temp.Format("%02x ",0xFF& (UINT)buf1[i]); 
      

  9.   

    arong1234,能告诉我tidtable.c这个文件具体是干什么的吗?