作者kktata (kktata)
看板C_and_CPP
标题[问题] 有关delete与阵列
时间Sun Mar 12 21:03:53 2017
不好意思,我是刚学C++的新手,问题可能很基本
我写了一个函式大概长这样
int* Preprocess(int a[], int n)
{
int* sparse = new int[n][floor(log(n)/log(2) )+ 1];
...................
return sparse;
}
请问应该在什麽时候用delete,可以在函式外面吗
还有我查了很多回传阵列的方法,有些说这个写法不好,请问通常应该会怎麽写
先谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.228.183.154
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1489323836.A.2A6.html
1F:推 LPH66: 原则上可以但建议不要, 因为你不会时常检查有没有删 03/12 21:12
2F:→ LPH66: 稍微好一点的方法是再写一个负责删的, 然後要删时记得呼叫 03/12 21:12
3F:→ LPH66: 更好一点的是用一个类别把它封起来, 这里你有 vector 能用 03/12 21:13
4F:→ LPH66: 不管如何, 这部份请去找你学程式的地方一定有说明 03/12 21:14
5F:推 loveflames: 这里说一下,函数不能返回阵列,阵列不能是函数参数 03/12 21:15
6F:→ loveflames: 作为参数会转成指标 03/12 21:16
7F:→ loveflames: 不过你可以传阵列的参考 03/12 21:16
8F:推 loveflames: 回到主题,我觉得你可以参考RAII 03/12 21:22
9F:→ james732: 新手就会写看起来这麽深奥的程式啊... 03/12 21:31
10F:推 loveflames: 先厘清函数怎麽用阵列,比delete时机重要多啦 03/12 21:35
11F:推 lovejomi: 这样new 是错的吧 03/13 09:52
12F:推 Sidney0503: 去看RAII+1 03/13 10:33
13F:推 loveflames: 话说初学者直接用vector最省事 03/13 12:16
14F:推 worcdlo: 我倒是觉得初学者就是要学着怎麽写各种结构 vector刷 03/13 12:59
15F:→ worcdlo: LeetCode时再用就好 03/13 13:00
16F:推 ronin728: 如果要用纯C风格,这函数应该还要再分开成分配资料用的 03/13 14:17
17F:→ ronin728: 还有计算处理资料用的,这样分开会比较好 03/13 14:18
18F:→ grayStone: unique _ptr 03/13 22:19