1

这是我的代码.. 给我一个警告说'str' 引用与局部变量'str' 关联的堆栈内存返回... 另外,我想确定我的逻辑是好的,或者是否有更简单的方法,我将非常感谢一些帮助以了解更多方法..谢谢!

void CopyString(char *s)
{
    delete szArr;
    if (s)
    {
        szArr = new char[strlen(s)+1];
        strcpy(szArr,s);
    }
    else
    {
        szArr = new char[1];
        szArr[0]=0;
    } 
}


MyString& operator+(char *s){
    if (!s)
        return *this;
    char *tmp=new char[strlen(szArr)+strlen(s)+1];
    strcpy(tmp, szArr);
    strcat(tmp, s);
    MyString str(tmp);
    delete tmp;
    return str;
}
4

2 回答 2

2

您正在返回一个引用,str该引用是您的函数中的局部变量。

返回副本:MyString operator+(char *s)

于 2013-08-08T23:25:46.520 回答
0

另一个小错误是 strcpy(tmp, s) 不正确。将 strcpy 更改为 strcat 可能是正确的。

于 2013-08-08T23:44:20.710 回答