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()函数返回之后被使用?谢谢! 展开
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()函数返回之后被使用?谢谢! 展开
3个回答
展开全部
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
malloc 和 new申请的空间是在"堆"上的,平时我们都是用声明变量来申请空间的,此时申请到的空间是"栈"上的,注意区分“堆”和“栈”。栈上的空间,不需要程序员负责释放,函数返回后自动就会释放;但是对上的空间,必须由程序员用 free 或 delete 释放,否则就会造成“内存泄露”。
你的例子中array所使用的内存,在getnew()返回后不会被使用,但是仍然被占用,也就是说这部分内存一直被你的程序占有。
你的例子中array所使用的内存,在getnew()返回后不会被使用,但是仍然被占用,也就是说这部分内存一直被你的程序占有。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询