计算机系统-内存溢出

从事IT工作7年了,说出来恐怕汗颜,一直不知道“内存溢出”这种情况为什么叫“内存溢出”,主要是因为“溢出”这两个字,以前知道内存溢出这种情况是因为对象不回收,一直不回收,死在堆里了,这种情况就叫做内存溢出,但是为什么会叫memory-leak(泄漏),无论是我们翻译成溢出,还是泄漏,它终究应该是从某个地方泄漏出去的,或者说从某个地方溢出出去的,比如,我们可以说水从桶中泄漏出去了,或者说水从水池中溢出了,那么在内存管理中,对象是从哪里泄漏出去的呢???我个人觉得这个答案应该是:函数,或者在java中叫做方法
比如下面这段C++代码

void fun(){
	int * list=new int[100];
	if(XXX){
		return;
	}
	delete [] list;
}

上面代码,如果走到if中,则直接返回,从此,该方法将从栈中执行完毕,而在该方法栈中创建的list这个对象,存在于堆中,而这个函数执行完毕之后,没有回收list,相当于list从该方法中泄漏出去了,至少我个人是这样理解“泄漏”两个字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章