这个问题很普通,也很常见,例如下面的代码就会报这个错,原因在于:
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;
}
本文探讨了C语言中从函数返回局部变量地址导致的问题,并提供了解决方案:通过在堆上分配内存并返回指针来避免局部变量被释放后引发的错误。同时提醒开发者注意释放堆上分配的空间。
4997

被折叠的 条评论
为什么被折叠?



