调用delete时应用程序崩溃

Sud*_*mar -4 c++ visual-c++

#include <iostream>

using namespace std;

int main()
{
char* p=new char[10];
p="sudheer";
char* q=new char[10];
q=p;
delete []p;

return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行上面的程序时,它崩溃与删除.任何意见?

joh*_*ohn 5

是的,你正在删除字符串文字"sudheer",这足以使程序崩溃.

我认为你的错误不是理解如何复制C字符串,strcpy用于此.如果你使用new [],你必须使用delete[]not delete.你可能打算写这个程序

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    char* p=new char[10];
    strcpy(p,"sudheer"); // use strcpy to copy C strings
    char* q=new char[10];
    q=p;
    delete[] p;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)