为了账号安全,请及时绑定邮箱和手机立即绑定

error:函数返回局部变量的地址

error:函数返回局部变量的地址

C
江户川乱折腾 2019-09-03 20:22:07
我是C的初学者,我正在自学。我正在创建以下功能:char *foo(int x){     if(x < 0){        char a[1000];        char b = "blah";        x = x - 1;        char *c = foo(x);        strcpy(a, b);        strcat(a, c);        return a;      }    blah ...}我基本上试图返回一个附加的字符串,但我收到以下错误:“错误:函数返回局部变量的地址”,任何建议,如何解决这个问题?
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

局部变量的生命周期仅在定义它的块内部延伸。当控件超出定义局部变量的块之外时,不再分配(不保证)变量的存储。因此,使用变量的生命周期区域外的变量的内存地址将是未定义的行为。


另一方面,您可以执行以下操作。


 char *str_to_ret = malloc (sizeof (char) * required_size);

  .

  .

  .

 return str_to_ret;

并使用str_to_ret相反。当returning时str_to_ret,malloc将返回分配的地址。分配的内存malloc是从堆中分配的,其堆的生命周期跨越程序的整个执行。因此,您可以在程序运行时随时随地访问内存位置。


另请注意,在完成分配的内存块之后,这是一个很好的做法,free它可以避免内存泄漏。释放内存后,无法再次访问该块。


查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 689 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信