EXE启动后..才11M...然后..一边看资源管理器里占用的大小....一边点程序里的内容....
结果越点越大...
最后...竞然超过了100M...KAO....窗体是采用启动后再手动NEW的...
而偶又在每一个FORM的FormDestroy上加入了FreeAndNil(self),但还是不行...怎么搞?

解决方案 »

  1.   

    只有调用窗体的Free方法才会触发FormDestroy事件的,另外在Destroy事件中使用FreeAndNil(Self)会出错的,因为Self已经不存在了!!要确定调用每一个新创建的窗体的Free方法来释放其占用的内存!
      

  2.   

    网上搜索一下delphi 内存泄露检测, 有一个单元文件checkmem.pas,可以检测那些地方内存泄露了.
      

  3.   

    窗体这样搞是没有必要的.主要是看是否创建了其它的对象,有没有释放.是否用了多个ADOQuery 查询数据后没有关闭.
      

  4.   

    一定是创建了对象,没有及时释放?
    那些用了没有释放的东东,最好马上FreeAndNil(对象)
      

  5.   

    如果只是一个一次性使用的Form可以在OnClose当中写入Action := caFree;//销毁
      

  6.   

    something create(nil)
    try
    .......
    somecode
    .......
    finallysomething.freeend
      

  7.   

    在Form的OnClose响应事件中加入Action := caFree;
    这样才是真正的Free掉
    可以用AQTime查一下,编译里要用Debug选项
    可以看一下我的Blog
    http://blog.csdn.net/flexitime/archive/2008/02/11/2088103.aspx