計算機系統-內存溢出

從事IT工作7年了,說出來恐怕汗顏,一直不知道“內存溢出”這種情況爲什麼叫“內存溢出”,主要是因爲“溢出”這兩個字,以前知道內存溢出這種情況是因爲對象不回收,一直不回收,死在堆裏了,這種情況就叫做內存溢出,但是爲什麼會叫memory-leak(泄漏),無論是我們翻譯成溢出,還是泄漏,它終究應該是從某個地方泄漏出去的,或者說從某個地方溢出出去的,比如,我們可以說水從桶中泄漏出去了,或者說水從水池中溢出了,那麼在內存管理中,對象是從哪裏泄漏出去的呢???我個人覺得這個答案應該是:函數,或者在java中叫做方法
比如下面這段C++代碼

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

上面代碼,如果走到if中,則直接返回,從此,該方法將從棧中執行完畢,而在該方法棧中創建的list這個對象,存在於堆中,而這個函數執行完畢之後,沒有回收list,相當於list從該方法中泄漏出去了,至少我個人是這樣理解“泄漏”兩個字

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