MFC中某个类有个CString类型数组成员变量m_szData[120],编译通过,程序退出时总是中断在atlsimpstr.h的void Release() throw()函数处:void Release() throw()
{
ATLASSERT( nRefs != 0 );//中断在这里if( _AtlInterlockedDecrement( &nRefs ) <= 0 )
{
pStringMgr->Free( this );
}
}m_szData[120]在构造函数里赋值初始化也没用,而如果把m_szData[120]注释掉则程序退出不会出现问题。
该如何解决?
mfcCString

解决方案 »

  1.   

    Release是在程序退出的时候异常的把!
      

  2.   

    怎么定义怎么用的?一般这样吧?
    CString str("default string");
    没见过str[120]的。
      

  3.   

    CStringArray 一般CString的数组这么用
      

  4.   

    我这么测试的:
    CString str[100];
    程序退出毫无问题。
    肯定不是初始化的问题,应该是你程序里面对他进行了操作,比如GetBuffer
      

  5.   

    我没有对其操作过,CString str[100]作为局部变量没问题,但是作为成员变量就会出现我所示的问题。
      

  6.   

    CStringArray我试过了,作为成员变量还是不行的。
      

  7.   

    可以CString str[120]这样定义的,也就是字符串数组。
      

  8.   


    不行指的什么? 是无法满足你的需求,还是报错啊?
    如果换别的也报错,估计就不是这里的问题。 你再换个char或其他数组试试吧
      

  9.   

    程序有点大,不好发上来。 CString str[100]作为成员变量,我只是定义了,除了在构造函数初始化之外,在其它地方没有使用过。就这样 退出程序会抛出断言。如果把CString str[100]注释掉,则退出程序不会出错。
      

  10.   

    不要用 CString str[100]
    用 CStringArray