...
    Figure:=TFigure.create;
    Figure.draw;
    Figure.destory;
    TRectangle(Figure).draw;
   ...程序这样执行也不会报错?为什么Figure已经Destory了,还可以执行TRectangle(Figure).draw,并且不报错?

解决方案 »

  1.   

    建议使用free来释放,直接用destory可能会由于某些因素导致释放出问题。
      

  2.   

    这样做并不安全,虽然你调用了Figure的Destroy,但指针没有变为nil,所以Figure指向的内存区域不是安全的,如果这个内存块还没有被其他占用,所以还没有出错。
      

  3.   

    delphi自己的内存管理机制,虽然已经调用了destroy方法,但是由于该对象所在的内存段柄未被其它数据所使用,所以表面上对它的操作是不会崩溃的。。但是这样也是由概率的。。另,释放对象用free方法好过直接destroy。