gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:42:52 46 4
gpt4 key购买 nike

我在尝试删除指针(用于 char 数组)时遇到段错误。请帮我。我在这里做错了什么吗?请在下面找到代码片段和输出。

代码:

# 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;
}

输出:

c=  hello*p = 10
Segmentation fault (core dumped)

编辑:

如果我不对字符数组使用 new 和 delete,是否是内存泄漏?我不能在我的代码中使用字符串,那么使用 const char* 变量的正确方法是什么?

提前致谢。

最佳答案

你在此处分配内存并将其分配给指针c

const char* c = new char[100];

但是然后您重新分配指针:

c = " hello";

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

您应该改为 copy将字符串放入分配的内存中。

关于c++ - 在 C++ 中使用 delete 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22529370/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com