2012-09-20 24 views
2

這是與Delphi XE2和FastMM 4.99以及Win7-64機器上的32位程序。爲什麼包含FastMM導致EInvalidTypecast錯誤?

我正在嘗試使用FastMM來檢查我一直在處理的一個小小的程序。該程序包含一個位於項目自動創建的表單列表中的數據模塊。數據模塊只包含一個TADOConnection對象。

當我在FastMM中啓用FullDebugMode時,退出程序時出現無效的類型轉換錯誤。罪魁禍首似乎是釋放數據模塊(錯誤發生在TADOConnection.GetADODataSet)。任何人都可以提出這是爲什麼發生?

+2

很明顯,這是因爲代碼嘗試一個無效的類型轉換。如果不能看到代碼,就很難更具體。如果你需要幫助,請提供足夠的細節。 –

+2

安裝MadExcept,至少你會發現錯誤在哪裏。 –

+0

將madExcept添加到您的應用程序總是一個好主意。 –

回答

3

事實證明,問題只是由FastMM暴露出來的,並非由它造成的。

具體來說,我想分類TADOQuery用於數據模塊。我記得爲這個類編寫了一個析構函數覆蓋,但沒有調用繼承的dtor。可能這是導致TADOConnection做一些未定義的事情。

+0

這沒有給你一個編譯器警告? :-) –

0

沒有更多的信息,很難說清楚,但是當你在釋放某些東西時遇到問題時,通常是因爲它試圖釋放已經釋放的東西。嘗試放置幾個斷點,以查看在看到此錯誤之前是否有任何涉及的類被釋放。如果是這樣,那應該可以幫助你追蹤它。