#include <iostream>
using namespace std;
char *CopyOf(const char *str);
void main(void)
{
char *hello = CopyOf("Hello\n");
cout << hello;
delete [] hello;
system("pause");
}
char *CopyOf(const char *str)
{
char *copy = new char(strlen(str) + 1);
strcpy(copy, str);
return copy;
}
当程序运行到delete语句时,发生我的错误。有什么建议吗?非常感谢你。
您应该分配一个char
s数组,如下所示:
char *CopyOf(const char *str)
{
char *copy = new char[strlen(str) + 1];
strcpy(copy, str);
return copy;
}
请注意,我使用方括号,而不是括号。你有什么用括号这样做是初始化一个单一的新char
与价值strlen(str) + 1
。然后,您通过调用覆盖了1个字节的缓冲区strcpy
。您应该强烈考虑使用std::string
;它将使您免于遭受很多这种C心痛。
另外,要编译代码,必须添加#include <cstring>
。最后,main()
应具有的返回类型int
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句