Delphi中抽象错误的可能模糊原因?

Esc*_*ity 8 delphi fastmm

在Delphi 7项目中,我们安装了FastMM.不久之后,我们发现其中一个表单开始在关闭时发出抽象错误消息.我已经对此进行了广泛的调试,到目前为止我找不到原因.此错误消息的通常原因似乎不适用于此处.应用程序未定义抽象类.我还在表单中搜索了可能使用TStrings或类似的东西.最重要的是,我们没有(好吧,我们认为我们没有)对这种形式做出任何改变.它刚破了.

  1. 除了尝试调用未实现的方法之外,是否还有其他可能的原因导致此错误?
  2. FastMM是否有可能在应用程序中启用了一些模糊的错误,直到现在仍然隐藏?

如果这些问题的答案是否定的,那么我将继续搜索未实现的方法调用,放心我不会错过其他内容.

Vil*_*nde 12

如果存在内存损坏,则可以引发所有类型的错误,并且很难找到原因.

回答你的问题:1)是的抽象错误也可能是由内存损坏引起的,2)是的,启用FastMM可以使错误看起来通常不被注意(但仍应修复).

查找内存错误的一般建议:

  1. 在FastMM中尝试"FullDebugMode"设置.
  2. 确保您创建的所有内容都与免费相匹配.
  3. 确保没有任何东西被释放多次.
  4. 确保在释放对象之后(或在创建对象之前)不使用该对象.
  5. 打开提示和警告(并在发生时修复它们).

  • +1.我加上5.打开提示和警告(并在发生时修复它们)` (3认同)
  • @KenWhite补充:-)唯一的问题是在遗留代码中可能有数百个警告并修复它们(错误地)引入新漏洞的风险.所以必须小心谨慎. (2认同)