亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 730 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號