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

如题,如果有这么一个段程序:
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()函数返回之后被使用?谢谢!

不会 因为他们是被分配在堆上的

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

当你退出 或结束程序的时候 系统会回收这些资源 这跟windows分配给你的是虚拟内存有关
不过这些都是系统的功能 与C++无关
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-22
子函数中使用了new而不delete,通常是不会释放的空间的。
内存被new出来以后,有一个指针指向这个空间。不管是在子函数中,或是在主函数中,都必须有一次delete来释放这个空间,如果没有做delete,即使退出程序,也无法回收这段内存了,内存就被泄露了。。
相似回答