这是Delphi XE2和FastMM 4.99,以及Win7-64机器上的32位程序。
我试图使用FastMM来检查我一直在做的一个小程序。该程序包括一个数据模块,该模块位于项目的自动创建的表单列表中。数据模块仅包含一个 TADOConnection 对象。
当我在 FastMM 中启用完全调试模式时,退出程序时出现无效的类型转换错误。罪魁祸首似乎是释放数据模块(错误发生在TADOConnection.GetADODataSet
)。谁能说出为什么会这样?
事实证明,问题只是FastMM暴露的问题,而不是由它引起的。
具体来说,我已经TADOQuery
子类化以用于数据模块。我记得为类编写析构函数覆盖,但未能调用继承的 dtor。可能这导致TADOConnection
做一些未定义的事情。
没有更多信息,很难确切地说,但是当你在释放某些东西时遇到问题时,通常是因为它试图释放已经释放的东西。 尝试放置几个断点,以查看在看到此错误之前是否释放了所涉及的任何类。 如果是这样,这应该可以帮助您追踪它。