2

これは、Delphi XE2 と FastMM 4.99、および Win7-64 マシン上の 32 ビット プログラムです。

FastMM を使用して、私が取り組んでいる小規模なプログラムをチェックしようとしていました。プログラムには、プロジェクトの自動作成フォーム リストにあるデータ モジュールが含まれています。データ モジュールには、TADOConnection オブジェクトのみが含まれます。

FastMM で FullDebugMode を有効にすると、プログラムを終了するときに無効な型キャスト エラーが発生します。原因はデータモジュールの解放にあるようです (エラーは で発生しますTADOConnection.GetADODataSet)。なぜこれが起こっているのか誰にも示唆できますか?

4

2 に答える 2

3

この問題は、FastMM によって引き起こされたものではなく、FastMM によって明らかにされたものであることが判明しました。

TADOQuery具体的には、データ モジュールで使用するためにサブクラス化しました。クラスのデストラクタ オーバーライドを書くことを思い出しましたが、継承された dtor を呼び出すことができませんでした。おそらく、これが にTADOConnection未定義の動作をさせていたのでしょう。

于 2012-09-20T21:19:29.577 に答える
0

詳細な情報がなければ、正確に言うのは難しいですが、何かを解放するときに問題が発生する場合、通常は、既に解放されているものを解放しようとしていることが原因です。このエラーが表示される前に、関連するクラスのいずれかが解放されているかどうかを確認するために、いくつかのブレークポイントを配置してみてください。もしそうなら、それはあなたがそれを追跡するのに役立つはずです.

于 2012-09-20T18:18:09.930 に答える