在次讨论内存泄露
下面是我对内存泄露的一点看法:
对于是不是内存泄露,还是要抓住定义,即能不能到达?
第一:一般的局部变量如int i都是在栈中分配,都会在程序退出的时候,自动弹出栈。所以栈中的变量和分配的内存不会出现内存泄露。
第二:对于堆中的分配的内存。这种内存的释放一般由两种释放情况,1,自己手工释放。(new delete)2,由系统释放。谈谈第2点,由要有系统释放,所以系统必须要知道为程序分配内存的地址。如果不知道的话,就不能正确释放。比如上面的
pi = new int;(1)
pi=new int;(2)
第(1)个分配的内存就不会由系统释放。因为丢失了它本身的地址。系统不知道如何找到它。
第(2)个可以被系统释放,即使没有被DELETE。