1。我是用动态创建窗口form1,然后用shouwmodule显示,该如何释放内存?我用form1.free可以吗?用form1.relese,destory就报错。是什么原因啊?
2。我的程序关闭后在windows的进程表中还在,怎么关不掉?内存还是没有释放掉吗?

解决方案 »

  1.   

    1、form1.free;
       form1:=nil;2、程序没正常关闭.
      

  2.   

    Form1:=TForm1.Create(nil)
    try
      Form1.showModal;
    Finally
      FreeAndNil(Form1);
    end;
      

  3.   

    try
      Form1:=TForm1.Create(self)
      Form1.showModal;
    Finally
      FreeAndNil(Form1);
    end
      

  4.   

    在onclose中加入
    form1 :=nil;
    action:=cafree;
      

  5.   

    try
      Form1:=TForm1.Create(self)
      Form1.showModal;
    Finally
      FreeAndNil(Form1);
    end
      

  6.   

    Form1:=TForm1.Create(Application)
    try
      Form1.ShowModal;
    finally
      Form1.Free;
    end;
      

  7.   

    我记得form1.free是记录form1要释放。但是如果查看内存的话他还会占有。只有用nil才可以彻底清空内存。
    不知道对不对~顺便再问一下。楼上几位说的
    form1:=Tform1.Create(Application\self\nil);
    这里的几个参数有什么不同。
      

  8.   

    form1:=Tform1.Create(Application\self\nil);
    Create里面的参数是属主对象,即这个对象负责释放Form1对象
    比如,如果是Appliction,则当应用程序结束时,Form1就会被Appliction自动释放
    并不需要人工来释放,Self在这里应该是指窗口类,一般情况下控件才指定为Self
    Form类一般不这么指定
    而如果是Nil呢,则表明没有属主对象,则你必须自己去释放它,即用Free,或FreeAndNil方法。
      

  9.   

    2、程序没正常关闭.
    '
    Application.terminal
      

  10.   

    Release用来释放窗体及其占用的内存,但它不等待释放过程结束,Borland建议用Free来代替。
    Destory只是从内存中移走窗体。正确的方法是调用窗体的Free方法,或调用FreeAndNil函数如果你的程序退出后,进程表中还有,可能是
    1、主窗体没有被正确关闭,有可能在关闭中出现错误
    2、可能有线程未被释放
      

  11.   

    在form的close事件中写上action :=caFree;就可以了
      

  12.   

    freeandnil(form1);//关闭窗体并释放内存Application.Terminate;//结束程序