gpt4 book ai didi

C++ 如何删除本地分配的字符数组?

转载 作者:行者123 更新时间:2023-11-30 00:49:05 26 4
gpt4 key购买 nike

我编写了一个函数,它接收一个 char 指针作为参数,然后构建一个包含该参数 char 的新动态分配的 char 数组。然后,它返回新的 char 数组。这是函数:

 char* read_string(char *pstr)

{
char *str;
str = new char[strlen(pstr)];//allocate memory for the new char
str[strlen(pstr)] = '\0';
for(unsigned i=0;i<strlen(pstr);i++)//build the new char
str[i]=pstr[i];
return str;//then return it
}

主要有:

int main()

{
char *Pchar = read_string("Test");

cout<<Pchar;// Outputs "Test"

delete [] Pchar;//"Program received signal SIGTRAP, Trace/breakpoint trap." error
}

我在 main 中声明了一个 char 指针,然后让它指向从 read_string 函数返回的 char 数组。它输出我想要的,但是如果我想释放内存,它会给我运行时错误。我如何释放如果我不再需要使用 Pchar,可以增加内存吗?

编辑:谢谢大家提供非常有用的答案。我已经成功解决了这个问题。

最佳答案

您需要分配更多内存才能为 EOS 字符留出空间:

str = new char[strlen(pstr)+1];

关于C++ 如何删除本地分配的字符数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438409/

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