我只是用一个CString的变量值赋给另一个CString变量啊

解决方案 »

  1.   

    CString变量没有被正确释放,造成的内存泄露你用到线程或者别的了没?
      

  2.   

    出错行在这儿
    pStaSec ->m_lftext = STATEXT[i];
    m_lftext是pStaSec的CString成员变量
      

  3.   

    这一般意味着你的string对象已经被破坏了,报错误的地方不一定是导致错误的地方,所以从你说的是看不出原因的根据你3楼的说法,这个CString变量是一个结构或者类的成员变量,要确保这个类同时有拷贝构造函数和operator=,否则必然出错
    看:http://blog.vckbase.com/arong/archive/2004/05/29/301.html
      

  4.   

    跨线程或者跨模块引用CString都会有问题的,还是char*用着安全
      

  5.   


    STATEXT也是CString?
    pStaSec ->m_lftext = STATEXT.GetAt(i); 
      

  6.   

    他说是两个CString对象之间的赋值,因此加个GetAt必然导致类型不匹配,右侧肯定变成TCHAR类型了
      

  7.   

    pStaSec是结构体么?查看一下变量的定义后的空间分配~
      

  8.   

    0312    void CString::AssignCopy(int nSrcLen, LPCTSTR lpszSrcData)
    0313    {
    0314        AllocBeforeWrite(nSrcLen);
    0315        memcpy(m_pchData, lpszSrcData, nSrcLen*sizeof(TCHAR));
    0316        GetData()->nDataLength = nSrcLen;
    0317        m_pchData[nSrcLen] = '\0';
    0318    }
    0319    
    0320    const CString& CString::operator=(const CString& stringSrc)
    0321    {
    0322        if (m_pchData != stringSrc.m_pchData)
    0323        {
    0324            if ((GetData()->nRefs < 0 && GetData() != _afxDataNil) ||
    0325                stringSrc.GetData()->nRefs < 0)
    0326            {
    0327                // actual copy necessary since one of the strings is locked
    0328                AssignCopy(stringSrc.GetData()->nDataLength, stringSrc.m_pchData);
    0329            }
    0330            else
    0331            {
    0332                // can just copy references around
    0333                Release();
    0334                ASSERT(stringSrc.GetData() != _afxDataNil);
    0335                m_pchData = stringSrc.m_pchData;
    0336                InterlockedIncrement(&GetData()->nRefs);
    0337            }
    0338        }
    0339        return *this;
    0340    }
    0341