不会出错,就是会造成大量的MEMORY LEAK。
如果需要消除这个影响,将Procedure2中最后一句删调:
MyClass=TMyClass.create;

解决方案 »

  1.   

    chechy(chechy):为什么会出现内存泄漏?MyClass.Free不是已经释放了吗?我的意思是先释放,然后重新创建。
      

  2.   

    1、调用Procedure1,创建一个MyClass。
    2、调用Procedure2,释放了1创建的Class,同时又创建了一个。
    3、再调用Procedure1,由于MyClass已经创建了,这时再次创建,就造成原有的(即Procedure2创建的MyClass)成了一块游离的内存块(你访问不了它,但它在内存确实存在),这个难道不是内存漏洞吗?
    反复调用,会造成大量的游离内存块。
      

  3.   

    请问 Nicrosoft(奈软)(生活就是折腾):为什么?该怎么解决?我的程序中有一个自定义类,在整个project中它必须是全局而且唯一的,当用户按下新建的时候,我要把当前的类中的数据保存到数据库,然后新生成一个,我现在用的方法是保存完后,把所有的data member清空。因为我这个类包含的成员比较多,而且类中还组合了其他类,所以这样做很麻烦,我也觉的用上面的方法不好,但显然更快。
      

  4.   

    to chechy:我描述的有点问题,sorry.
    我的procedure1就是响应主窗口的OnCreate的过程,所以一次运行中,它只回调运一次,而procedure就是响应'新建‘菜单的单击过程。是不是这样就安全呢??
      

  5.   

    to babyboy:更快?你是说程序执行的更快还是写程序更方便?如果说程序执行的速度的话,你这样做更慢,慢很多!销毁一个对象再创建一个对象的成本非常高(相比于清空数据成员)你这样做只是方便了写程序,不用一个一个成员去清空,但这样的程序并非好程序。是图一时方便,还是为以后考虑写出更优美的程序,更可维护的程序,你自己选择。