比如:
class ABC {};
static ABC *p=NULL;
void func()
{
p = new ABC;
....
}
....
在程序退出时,如果没有显示的去调用
delete p;
那new 出来的空间会被释放么?不是说指针,而是指针指定的空间。
网上查了,好像又不用意见,而且很多人是在说静态变量本身,而不是它指向的空间,请高手确认一下,谢谢了。
另外应用是在LINUX系统上。
静态指针,用NEW分配内存,如果不主动删除,在程序(进程)结束后会自动释放...
无论你是怎么分配的,也无论你是分配在堆还是栈上面的,很明显,它都是属于进程的,当程序退出的时候,进程都不存在了,进程所占有的所有资源,操作系统都会收回的,所以你不用担心了 === 希望我的回答对你有所帮助 参考资料:http:\/\/baike.baidu.com\/view\/19746.htm ...
在C++中,用new申请了指针指向某内存却不用delete销毁,直到整个应用程序...
会导致内存泄露。操作系统管理内存,是有一个资源队列的,用new申请一块内存时,从可用资源中取一块可用资源分配给应用程序。如果没有用delete归还系统,这块内存就不会返回资源队列,无法再分配给其他应用程序。就好像你从图书馆借书,结果看完后你自己把书放回书库,没有在图书管理系统中体现出来这本书...
vc中全局指针,在子函数中用new分配的空间,没有调用delete,退出子函数...
使用 new 分配的内存是不会被自动销毁,直到程序进程退出或者你调用delete 删除该指针分配的内存.全局指针被销毁的原因有可能:1. 你的指针是一个引用计数智能指针,比如boost::shared_ptr, 没人用引用就自动销毁了.2. 指针没有被销毁,也许你的程序在那里把全局指针重新赋值或者设为NULL了.(这个貌似概率...
在一个函数内部用new分配的空间什么时候销毁
子函数中使用了new而不delete,通常是不会释放的空间的。 内存被new出来以后,有一个指针指向这个空间。不管是在子函数中,或是在主函数中,都必须有一次delete来释放这个空间,如果没有做delete,即使退出程序,也无法回收这段内存了,内存就被泄露了。
C语言中 静态链表中结点占据的内存空间需要程序员自己释放 这个说法...
1、如果是小程序,就算不释放一般没什么大后果,因为开内存比较小。因为这里的空间就是内存空间,如果不断申请的话,会占用大部分内存。如果不释放的话,就一直占用内存,使内存减小。直到关闭程序,内存才会释放。可以free函数释放内存。2、free函数:原型:void free(void *ptr);功能:释放malloc(或...
C++经典面试问题
函数执行结束时这些存储单元自动被释放。 栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3)用malloc或new申请内存之后,应该立即检查指针值是否为NULL.防止使用指针值为NULL的内存, 不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。避免数组或指针的下标越界, 特别要...
关于指针释放的问题
这样就导致旧的指针不再指向这部分数据了。当然,当程序结束的时候,大部分的编译器或者是操作系统会直接帮我们把原先占有的 指针释放掉,这样我们才能正常的操作。但是如果现在换了一个不会帮你释放掉指针操作的系统,那么的确会使得内存空间被一直占用。就像你打开了一个软件一直没有关闭,内存就会被占用...
关于c++ new delete的问题
你肯定学过静态变量和自动变量,自动变量是有作用域限制的,出了作用域你就不能用了。。静态变量虽然可以通过指针在任何位置使用,但有一个缺陷就是一点声明静态变量这个变量不能删除,永久占内存,浪费空间,除非进程关闭。。。new和delete提供了一种动态使用内存的方法,就弥补了静态变量和自动变量的缺陷...
是在windows系统中预留出来的一段内存区域
程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活,但如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,频繁地分配和释放不同大小的堆空间将会产生堆内碎块。 程序的内存空间: 1、栈区(stack)— 由编译器...
c\/c++如变量内存何时会回收?
堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete(如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。全局\/静态存储区...