作者a0928855286 (Alan君)
看板C_and_CPP
標題Re: [問題]關於陣列字串回傳主程式的問題
時間Sun Jun 24 21:20:13 2018
首先先簡單的介紹一下local變數
local變數指的是在某個區塊內宣告的變數(像是main,或是你的getrandom都是一個區塊)
宣告的變數會暫時放在stack中,離開區塊後就會被清掉了
所以你的name在離開了getrandom函式的時候,就會不見了
當然也沒辦法回傳給main囉
因為根本沒有這個東西,也當然接收不到
那處理的辦法目前我想到兩種
一種就是你的方式
在函式內跟記憶體要一個空間(也就是你的*r),再把name裡面的東西複製過去
(但是這樣的方式好像很不好,會造成記憶體洩漏? )
另外一種就是在main裡面宣告好一個變數(譬如說k),然後當做getrandom的變數傳進去,
再放進去k,再回傳就可以了
我忘記是不是還有其他更好的辦法可以解決這個問題~如果我有想到再補上~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.9.165.211
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1529846415.A.633.html
推 sarafciel: 沒有free才會memory leak,其實補個註解說明就好了 06/24 22:11
推 moebear: 一個是在裡面跟系統要空間 另外一個是在外面先準備好空間 06/24 22:12
推 jojojen: 推1F 應該只要記得free(r)就不會memory leak了吧 06/25 00:28
→ jojojen: 然後我手上的書範例是用第二種 return都傳status是OK還是 06/25 00:30
→ jojojen: ERROR 這樣寫好像比較嚴謹(?) 06/25 00:32
→ cphe: 除非是在bg一直跑個不停的process,要不然只要terminate, 06/25 09:51
→ cphe: 你allocate的heap一樣會被OS free掉,但一般習慣都會free 06/25 09:52
→ cphe: 所以不見得會memory leak 06/25 09:52