我有一個包含指向打開文件的文件句柄fHandle
的類。現在,它可以被多個例程中的任何一個關閉,並且基於該程序的動態運行。以前關閉的文件句柄上的fclose()的雙倍釋放錯誤
爲了確保文件確實關閉,我把簡單的代碼片段放在我的析構函數中:if(fHandle!=NULL) fclose(fHandle);
。事實證明,如果其中一個例程之前已經關閉了這個文件,那麼運行析構函數代碼片斷會導致雙重空閒操作,並且我得到了**glib detected**
錯誤消息。
如何確保我不關閉先前已關閉的文件句柄(除了放入NULL
檢查)?
如果你使用類又名C++,你應該這樣標記它 – jozefg