如果我在销毁它之后使用该对象,为什么我不会收到异常?

时间:2017-06-25 17:04:09

标签: delphi runtime-error delphi-2009

以下代码工作正常,但不应该!当我单击Button1时,首先销毁对象,然后使用它的Value并且我没有收到任何访问冲突或者其他东西......更多的是,乘法运算得到了正确的结果,证明了{{1}没有被破坏!但话说回来,这也不是真的,因为当我关闭程序时它会报告任何内存泄漏。我很困惑。

Obj1

1 个答案:

答案 0 :(得分:5)

对象被破坏。内存返回到内存管理器。接下来发生的事情是你无法控制的。内存可以返回给系统。在这种情况下,您会看到运行时错误。或者,存储器管理器可以使存储器保持活动状态,以便下次程序请求该大小的块时重用。这就是这里发生的事情。

您的程序显示未定义的行为。任何事情都可能发生,包括似乎有效的计划。显然程序是错误的,你必须在销毁后才能访问它们。

如果您使用FastMM的完整调试版本,那么您应该会看到一个错误,因为在这种情况下,会采取步骤来检测免费后的访问权限。这是一个有用的调试工具。