C++子函数中用new而不delete,那么这部分空间是否会被释放?

如题,如果有这么一个段程序:voidgetnew(int(*arrayp)[2]){*arrayp=newint[2];(*arrayp)[0]=0;(*arrayp)[... 如题,如果有这么一个段程序:
void getnew(int (*arrayp)[2])
{
*arrayp = new int[2];
(*arrayp)[0]=0;
(*arrayp)[1]=1;
}
void main()
{int array[2];
getnew(&array);
cout<<array[0]<<array[1]<<endl;
delete []array;
}
如上程序中array数列所使用内存会不会在getnew()函数返回之后被使用?谢谢!
展开
 我来答
cooke1234
推荐于2017-09-18 · TA获得超过6861个赞
知道大有可为答主
回答量:4617
采纳率:72%
帮助的人:3605万
展开全部
子函数中使用了new而不delete,通常是不会释放的空间的。
内存被new出来以后,有一个指针指向这个空间。不管是在子函数中,或是在主函数中,都必须有一次delete来释放这个空间,如果没有做delete,即使退出程序,也无法回收这段内存了,内存就被泄露了。。
wangtk1982
推荐于2018-03-14 · TA获得超过3742个赞
知道大有可为答主
回答量:3206
采纳率:100%
帮助的人:1453万
展开全部
不会 因为他们是被分配在堆上的

在你delete之前 他是不会自动回收的

当你退出 或结束程序的时候 系统会回收这些资源 这跟windows分配给你的是虚拟内存有关
不过这些都是系统的功能 与C++无关
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongyue2008
2011-02-15 · TA获得超过3604个赞
知道大有可为答主
回答量:1300
采纳率:100%
帮助的人:598万
展开全部
malloc 和 new申请的空间是在"堆"上的,平时我们都是用声明变量来申请空间的,此时申请到的空间是"栈"上的,注意区分“堆”和“栈”。栈上的空间,不需要程序员负责释放,函数返回后自动就会释放;但是对上的空间,必须由程序员用 free 或 delete 释放,否则就会造成“内存泄露”。
你的例子中array所使用的内存,在getnew()返回后不会被使用,但是仍然被占用,也就是说这部分内存一直被你的程序占有。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式