Re: [問題]關於陣列字串回傳主程式的問題

作者: a0928855286 (Alan君)   2018-06-24 21:20:13
首先先簡單的介紹一下local變數
local變數指的是在某個區塊內宣告的變數(像是main,或是你的getrandom都是一個區塊)
宣告的變數會暫時放在stack中,離開區塊後就會被清掉了
所以你的name在離開了getrandom函式的時候,就會不見了
當然也沒辦法回傳給main囉
因為根本沒有這個東西,也當然接收不到
那處理的辦法目前我想到兩種
一種就是你的方式
在函式內跟記憶體要一個空間(也就是你的*r),再把name裡面的東西複製過去
(但是這樣的方式好像很不好,會造成記憶體洩漏? )
另外一種就是在main裡面宣告好一個變數(譬如說k),然後當做getrandom的變數傳進去,
再放進去k,再回傳就可以了
我忘記是不是還有其他更好的辦法可以解決這個問題~如果我有想到再補上~
作者: sarafciel (Cattuz)   2018-06-24 22:11:00
沒有free才會memory leak,其實補個註解說明就好了
作者: moebear (萌熊)   2018-06-24 22:12:00
一個是在裡面跟系統要空間 另外一個是在外面先準備好空間
作者: jojojen (JJJ)   2018-06-25 00:28:00
推1F 應該只要記得free(r)就不會memory leak了吧然後我手上的書範例是用第二種 return都傳status是OK還是ERROR 這樣寫好像比較嚴謹(?)
作者: cphe (魔鬼藏在垃圾筒裡)   2018-06-25 09:51:00
除非是在bg一直跑個不停的process,要不然只要terminate,你allocate的heap一樣會被OS free掉,但一般習慣都會free所以不見得會memory leak

Links booklink

Contact Us: admin [ a t ] ucptt.com