今天发现一个特别奇怪的问题,同样的代码在我的机子上运行没问题,在另外一台机子上发现在一个函数体里面 CString strTemp = “abc”;在退出函数体时,进入~CString()函数,在FreeData(GetData())时出错,感觉很诡异,就只是建立的一个普通的字符串对象,没有new,是什么原因呢?请高手指教!先谢过了!

解决方案 »

  1.   

    肯定是有数组越界比如: CString str = "abc";
    char * p = str.GetBuffer(3);
    p[4] = 0;
    这种东东。
      

  2.   

    有可能是调用了GetBuffer(),之后没调用ReleaseBuffer();
      

  3.   

    您的代码就这样简单吗?仅仅是CString strTemp = “abc”;这一句?其它的地方没有对strTemp进行操作?如果有贴出操作部分的代码
      

  4.   

    在这个函数体内部是没有调用GetBuffer(),只是一个简单的从一个函数获取值赋值给这个字符串,再者在其它很多机子上运行都没有毛病,在这台机子和另外几台机子上就出现类似的问题,怀疑是不是系统补丁的问题?