作者ntucorner (台大角落)
看板C_and_CPP
标题[问题] 动态记忆体配置
时间Sat Jan 21 15:30:26 2017
int *reduce(int a,int*p) {
}
我想写这样的一个函式
输出为指标 输入是整数a 跟 一个指标p
根据a 我将配置一个指标r 装入指标p的某些内容
但我想问 我用new配置r 後
我将return r 给另一个函式用
但我该在甚麽时候delete r
因为在回传前不能delete 传了之後又delete不了 变成两难
1.是函式回传後r自动会释放吗
2.或是在main里面也能delete r(感觉他会找不到r)
3.我应该换个写法
感谢大家!
--
Sent from my Windows
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.177.44.209
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1484983829.A.AA9.html
1F:→ bachelorwhc: delete是对记忆体位置 你不去delete 就会一直在那边 01/21 15:41
2F:→ bachelorwhc: 接return value的 用smart pointer包起来 确保不用时 01/21 15:42
3F:→ bachelorwhc: 自动释放 01/21 15:43
4F:嘘 grayStone: 感觉... 直接试试看 或是把记忆体位址印出来看 01/21 16:42
5F:推 Bencrie: 不会。可以。正常,通常文件会提醒你要 free 01/21 17:55
6F:→ ntucorner: 感谢 01/21 21:15
7F:推 LPH66: 这里也有一个做法是类似给 FILE* 的 fopen/fclose 函数对 01/21 21:33
8F:→ LPH66: 索取跟释放资源时各使用一个特定函数 01/21 21:34
9F:→ LPH66: 这样 free 就能写在释放函数里面了 01/21 21:34
10F:推 eye5002003: 听起来用smart pointer是最佳解了 01/24 22:51