void Release() throw()
{
ATLASSERT( nRefs != 0 );//中断在这里 if( _AtlInterlockedDecrement( &nRefs ) <= 0 )
{
pStringMgr->Free( this );
}
}有人知道原因吗?
找遍了代码,没找到原因

解决方案 »

  1.   

    引用计数破坏,非法再次调用Release()
    看下是不是线程异常退出时,修改了引用计数.
      

  2.   

    我也遇到过,出错的地方在memset或者数组越界
    比如:byte barr[10];
         memset(barr, 0, 11); //这里就有问题,估计会把barr外的内存也清0了
    再比如:byte barr[10];
           barr[10] = 11; //越界了另外
     byte * barr = new byte[10]; 比 byte barr[10]; 好一些
     用  byte * barr = new byte[10];
    记得 delete barr; barr = NULL;我就是这么解决的...没再报错过。。
      

  3.   

    我也遇到过,情况如下(希望对出现同样问题的网友有所帮助)
    定义了如下两个结构体
    struct struct1
    {
         char a;
         char b[20];
    };struct struct2
    {
         char c[22];
    }struct1 struct1_a={0};
    struct2 struct2_b={0};然后使用
    memcpy(&struct1_a.b,&struct2_b.c,sizeof(struct2_b.c));
    就出现这种错误了(因为struct2_b.c空间大于struct1_a.b)
    我出现这种低级错误的原因是后面修改程序不完全........