在c ++中使用delete时出现分段错误

A R*_*A R 0 c++ linux pointers const char

我试图删除一个指针(对于char数组)时遇到seg错误.请帮我.我在这里做错了什么.请在下面找到代码段和输出.

代码:

# include <iostream>
using namespace std;
int main()
{
        int *p = new int;
        const char* c = new char[100];
        c = " hello";
        *p = 10;
        cout << "c= " << c << "*p = " << *p << endl;
        delete p;
        delete c;
        c = NULL;
        p = NULL;
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

c=  hello*p = 10
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

编辑:

如果我不使用new和删除字符数组,它是一个内存泄漏?我不能在我的代码中使用字符串,那么使用const char*variable的正确方法是什么?

提前致谢.

Som*_*ude 6

您可以在c此处分配内存并将其分配给指针

const char* c = new char[100];
Run Code Online (Sandbox Code Playgroud)

但是你重新分配指针:

c = " hello";
Run Code Online (Sandbox Code Playgroud)

这意味着您松开了原始指针,现在c指向"hello"您无法删除的文字字符串.

你应该做的是字符串复制到分配的内存中.