为什么包含FastMM会导致EInvalidTypecast错误?

时间:2012-09-20 18:12:39

标签: delphi fastmm

这是使用Delphi XE2和FastMM 4.99,以及Win7-64机器上的32位程序。

我试图使用FastMM检查我一直在研究的一个小程序。该程序包含一个数据模块,该模块位于项目的自动创建表单列表中。数据模块仅包含TADOConnection对象。

当我在FastMM中启用FullDebugMode时,退出程序时出现无效的类型转换错误。罪魁祸首似乎是释放数据模块(错误发生在TADOConnection.GetADODataSet)。谁能说明为什么会这样?

2 个答案:

答案 0 :(得分:3)

事实证明,问题只是FastMM暴露的问题,而不是由它造成的。

具体来说,我将TADOQuery子类化为与数据模块一起使用。我记得为类编写了析构函数覆盖,但未能调用继承的dtor。可能这导致TADOConnection做了一些未定义的事情。

答案 1 :(得分:0)

如果没有更多信息,很难准确地说出来,但是当你在解放某些东西时遇到问题时,通常是因为它试图释放一些东西。已经被释放了。尝试放置一些断点,以查看在看到此错误之前是否已释放所涉及的任何类。如果是这样,那应该可以帮助您追踪它。