这个问题很普通,也很常见,例如下面的代码就会报这个错,原因在于:
s是局部变量,在栈上分配空间,当函数结束后会回收空间,这样s返回的内容无效。
解决方法是在堆上申请空间,然后返回,但是这样做需要注意释放空间。
char* func() {
char s[100];
strcpy(s, "hello");
return s;
}
int main(int argc, char **argv) {
puts(func());
return 0;
}
char* func() {
char *s = malloc(100);
strcpy(s, "hello");
return s;
}
int main(int argc, char **argv) {
puts(func());
return 0;
}