2012-08-17 39 views
0

雖然在Delphi 7關閉應用程序,我得到以下錯誤的應用:內存錯誤,同時關閉

「在0x018333f4在0x011c34a6指令引用內存內存不能被讀取。」

任何想法是什麼原因造成這個問題?

+2

我刪除了你沒有使用的delphi版本的所有標籤。另外,無需在帖子中籤名,堆棧溢出自動包含簽名。 – 2012-08-17 11:07:55

回答

4

這是一個訪問衝突異常。當程序嘗試訪問無效的內存地址時會引發該錯誤。

最明顯的原因是您正在訪問已被釋放,並返回到系統內存。我建議您在調試器下執行,並讓調試器在引發異常的代碼處中斷。這會告訴你你引用了什麼對象,然後你必須弄清楚爲什麼在對象被銷燬後引用它。

話雖如此,0x011c34a6的指令指針值並不像它在你的exe文件將設在0x00400000。所以也許這個異常是在一個DLL中引發的,它可能會讓錯誤更難以調試。

我推薦你使用FastMM內存管理器具有完全調試選項,而不是默認的Borland MM德爾福7 FastMM有很多調試工具來幫助定位和診斷故障,如這一點。它可能有助於追蹤這個故障,但如果沒有,它肯定會幫助您在未來發現其他故障。

0

Vishal。我可能是幾件事情。 如果您試圖釋放或訪問已在代碼中更早釋放的內容,則會發生這種情況。 如果您在應用程序關閉期間執行的代碼中執行代碼,則可能會發現錯誤。 你使用線程嗎?

+0

我沒有使用線程。當我釋放所有對象時,沒有錯誤。當FormDestroy事件執行時沒有任何錯誤,那麼我得到這個錯誤信息。在執行我的代碼時,這個錯誤不會發生。當delphi完成FormDestroy事件時,會出現這條消息 – 2012-08-17 11:10:15

+0

@Vishal:嘗試並且不釋放這些對象以查看是否可以識別導致它的對象。我有時不得不做解決方法來解決這些問題...... – 2012-08-17 11:18:41

+0

我試圖不釋放任何對象,然後也是同樣的錯誤。 – 2012-08-17 11:35:29