我正在研究c ++语义和语法,我真的不知道这个代码有什么问题,它编译但是停止工作。我会帮助你,谢谢你。
#include <iostream>
#include <string.h>
using namespace std;
char* func(char* M)
{
int initval = 2;
char *x= new char[10];
x="idea";
strcpy(x, M+initval);
return x;
}
int main()
{
char* x;
char s[10]= "alguna";
x= func(s);
cout << *x << endl;
return 0;
}
答案 0 :(得分:0)
关闭之前,x="idea";
就是您的问题所在。你丢弃缓冲区并将其指向一个常量值,然后尝试分配给它,这几乎总是非法的(应该总是非法的,但显然它正在为你编译......)。