作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1529846415.A.633.html
1F:推 sarafciel: 没有free才会memory leak,其实补个注解说明就好了 06/24 22:11
2F:推 moebear: 一个是在里面跟系统要空间 另外一个是在外面先准备好空间 06/24 22:12
3F:推 jojojen: 推1F 应该只要记得free(r)就不会memory leak了吧 06/25 00:28
4F:→ jojojen: 然後我手上的书范例是用第二种 return都传status是OK还是 06/25 00:30
5F:→ jojojen: ERROR 这样写好像比较严谨(?) 06/25 00:32
6F:→ cphe: 除非是在bg一直跑个不停的process,要不然只要terminate, 06/25 09:51
7F:→ cphe: 你allocate的heap一样会被OS free掉,但一般习惯都会free 06/25 09:52
8F:→ cphe: 所以不见得会memory leak 06/25 09:52