c++ 用new申请二维数组,可以用free释放吗?

函数的传入参数是在函数外面运算过程中用new申请的一个指向动态数组的指针p,这个p既是输入也要输出,所以形参用的是指针引用*&p此时我在函数里面会改变这个指针所指向的数组... 函数的传入参数是在函数外面运算过程中用new申请的一个指向动态数组的指针p,这个p既是输入也要输出,所以形参用的是指针引用 *&p
此时我在函数里面会改变这个指针所指向的数组的大小,new申请的不能用realloc,那么我现在这样操作对不对:
free(p) //释放掉p所指向的内存
double *p = new double *[] //重新对p进行初始化,让后王p[]中填充数据

这样会引起内存泄露吗?
这样p所指向的数组是不是不能传递出去?
展开
 我来答
再见图安7
2016-09-03 · TA获得超过1629个赞
知道小有建树答主
回答量:797
采纳率:0%
帮助的人:557万
展开全部

new 出来的自然要 delete 释放了,二维数组应该逐维释放,而不应该一次性释放,具体怎么释放取决与你怎么 new 的。

例如

double **p;
p=new double*[5];
for (int i=0;i<5;i++)
{
  p[i]=new double[6];
}
// 这样 p 就是一个动态二维数组,释放:
for (int i=0;i<5;i++)
{
    delete []p[i];
}
delete []p;

而你的应该是一维数组,所以 delete []p 就可以了

更多追问追答
追问
我的意思是我想在子函数里面对p所指向的数组进行扩容该怎么办呢
追答

从你的 *& 来看是一维数组,一维数组扩容就容易了:

// 释放旧的
delete []p;
// 创建新的
p = new double[5]; // 其中 5 是我设置的大小,你根据需要自行设置
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式