删除*char []

use*_*609 2 c++

如果我尝试删除一个字符,我会收到访问冲突错误.

继承我的代码:

int main()
{
    char *myString = new char[32];
    myString = "Hello";
    cout << myString;
    cin.get();

    delete [] myString;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我也试过了

delete myString
Run Code Online (Sandbox Code Playgroud)

但我仍然得到访问违规错误

ava*_*kar 8

行后

 myString = "Hello";
Run Code Online (Sandbox Code Playgroud)

指针myString不再指向您已分配的数组,而是指向字符串文字.这条线

delete [] myString;
Run Code Online (Sandbox Code Playgroud)

然后尝试删除文字(导致崩溃).

您可以使用strcpy或更好地复制字符串std::string.

std::string myString = "Hello";
cout << myString;
Run Code Online (Sandbox Code Playgroud)

  • 如果你*真的*不能使用`std :: string`(为什么?),那么是的,你必须使用`strcpy`. (3认同)