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