CTest
{
public:
******private:
char *m_szText;
};void CTest::SetText(char *szText)
{
// 第一种给m_szText赋值的方法
int len = strlen( szText );
m_szText = NULL;
m_szText = new char[ len ];
strcpy( m_szText, szText ); // 第二种给m_szText赋值的方法
m_szText = szText;
}请问上面两种给m_szText赋值的方法应该用那种好些?或者是还有其他更好的方法,谢谢!

解决方案 »

  1.   

    直接相等一定不行
    第一种方法中既然m_szText = new char[ len ];
    那么就不能直接 m_szText = NULL;
    而是首先要delete[]m_szText;
      

  2.   

    第二种不行,第一种需要作如下改进:int len = strlen( szText );
    if (m_szText != NULL)
    {
       delete[] m_szText;
       m_szText = NULL;
    }
    m_szText = new char[ len + 1 ]; // 为'\0'保留空间
    strcpy( m_szText, szText );
      

  3.   

    CString str;str = "abcdefghijklmnopqrstuvwxyz";char* ch = new char[str.GetLength()];