函數返回值爲局部變量-數組

問題:

當函數返回值爲數組(局部變量)時,局部變量存儲在中,其作用域只在函數內部,由編譯器自動分配釋放;

當函數調用結束時,棧指針回退,局部變量內存被釋放,此時再引用原來的局部變量就會出現不可預見的結果。

解決方法:

方法一:把數組定義爲static類型的數組,並返回數組

static修飾的變量和函數的生存週期與整個程序的運行期一樣。

方法二:在函數內給指針申請空間(malloc),返回該指針,在主函數中釋放該指針的內存(free)

因爲當給指針a申請空間時,給指針分配的空間在堆上。

堆用於動態內存分配。堆在內存中位於BSS區和棧區之間。一般由程序員分配和釋放,若程序員不釋放,程序結束時有可能由OS回收。

 

參考:函數返回值爲數組

https://www.cnblogs.com/wgang171412/p/5018407.html

發佈了23 篇原創文章 · 獲贊 3 · 訪問量 3730
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章