子函数中使用了new而不delete,通常是不会释放的空间的。
内存被new出来以后,有一个指针指向这个空间。不管是在子函数中,或是在主函数中,都必须有一次delete来释放这个空间,如果没有做delete,即使退出程序,也无法回收这段内存了,内存就被泄露了。。
不会 因为他们是被分配在堆上的
在你delete之前 他是不会自动回收的
当你退出 或结束程序的时候 系统会回收这些资源 这跟windows分配给你的是虚拟内存有关
不过这些都是系统的功能 与C++无关
malloc 和 new申请的空间是在"堆"上的,平时我们都是用声明变量来申请空间的,此时申请到的空间是"栈"上的,注意区分“堆”和“栈”。栈上的空间,不需要程序员负责释放,函数返回后自动就会释放;但是对上的空间,必须由程序员用 free 或 delete 释放,否则就会造成“内存泄露”。
你的例子中array所使用的内存,在getnew()返回后不会被使用,但是仍然被占用,也就是说这部分内存一直被你的程序占有。