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()函数返回之后被使用?谢谢!
展开
 我来答
wangtk1982
推荐于2019-11-01 · TA获得超过3742个赞
知道大有可为答主
回答量:3206
采纳率:100%
帮助的人:1453万
展开全部
不会 因为他们是被分配在堆上的

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

当你退出 或结束程序的时候 系统会回收这些资源 这跟windows分配给你的是虚拟内存有关
不过这些都是系统的功能 与C++无关
五樱苍斌斌
2020-10-22 · TA获得超过1310个赞
知道小有建树答主
回答量:1783
采纳率:100%
帮助的人:9.6万
展开全部
子函数中使用了new而不delete,通常是不会释放的空间的。
内存被new出来以后,有一个指针指向这个空间。不管是在子函数中,或是在主函数中,都必须有一次delete来释放这个空间,如果没有做delete,即使退出程序,也无法回收这段内存了,内存就被泄露了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式