您的位置:首页 > 编程语言 > C语言/C++

【c/c++】function returns address of local variable

2017-12-22 16:17 1051 查看
这个问题很普通,也很常见,例如下面的代码就会报这个错,原因在于:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: