這個問題很普通,也很常見,例如下面的代碼就會報這個錯,原因在於:
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;
}