我用下面的语句在主窗口的菜单单击事件中创建窗体:
try
     login1form:=Tlogin1form.Create(application);
     login1form.showmodal;
    finally
    login1form.free;
  end;
关闭窗体是用close,
为什么我创建一个窗体后,然后关闭,系统占用的内存不但没有减下来,而且当我第二次再打开这个窗体时,内存还不停的增加,这样如果多次打开窗口,系统的内存会被吃光,该怎么办,如何让他释放内存,请教大家!

解决方案 »

  1.   

    这样用
    application.createform(tloginlform,loginlform);
    ..
    在close事件里
    tloginlform:=nil;
    action:=cafree;
      

  2.   

    可能并不是这个loginform没有释放,而是你在这个loginform里面创建的一些资源没有释放,例如,假如你是用TADODataSet.Create(nil)的方式创建的数据集,则必须手动释放
      

  3.   

    是啊,最好是把窗体里的所有东西都释放了再FREE窗体,才行
      

  4.   

    to huangy0153(遥遥),但如果不自动创建窗体,该怎么写呢?象我的那种方式.to hunterht(核桃II——俺就是核桃的马甲,你说的那种问题不存在的,因为的组件都是在设计期自动创建的,而且象TADODataSet.等都是在一个统一的数据模块中.
      

  5.   

    一般窗口:
    login1form:=Tlogin1form.Create(application);
         login1form.showmodal;
        login1form.free;即可。
    MDI子窗体:
    application.createform(tloginlform,loginlform);
    ..
    在close事件里
    tloginlform:=nil;
    action:=cafree;
      

  6.   

    我也碰到类似的问题:关闭了所有form后,在点击整个程序的close按钮时,系统提示堆栈溢出,然后,即使按热启动键结束进程,也是无法结束进程,只好强行关掉微机电源,帮我分析一些,并给我一些方法和代码,谢谢啦
      

  7.   

    在close事件里
    tloginlform:=nil;
    action:=cafree;
      

  8.   

    老问题了 http://community.csdn.net/Expert/TopicView.asp?id=2892569