我的程序运行一段时间后发现内存消耗殆尽,请问如何分配和释放内存比较合理?欢迎大家举出实例!

解决方案 »

  1.   

    如果你建的项目有五个以上的窗体,建议你用一个窗体,建一个,不要都在一开始就建,当用完之后close,不要hide,这样就可以释放很多的内存。
      

  2.   

    感谢你们的参与,但是你们的根本没有看懂我的意思,我是说如何在程序中分配和释放内存,而不是创建几个窗体的问题,我的程序运行一周后发现内存严重不足,系统运行很慢,最终因为内存消耗殆尽而被迫重新启动,我的程序是个监控程序,无人操作,就一个窗体,显示一条曲线,不断从现场采集数据,显示数据,保存数据,查询数据,要求至少能够连续运行一年,但是现在才运行一周就已经不行了,我用了大量的动态分配内存方法,即用setlength函数,结果出现了这种情况,希望各路高手参与进来,指点迷津!谢谢
      

  3.   

    请教一个问题:如果两次用Setlength函数给一个全局变量分配内存,第一次分配了1000个字节,第二次分配了500个字节,那么另外500个字节能够自动释放吗?另外在函数内部的局部变量在退出后可以自动释放吗?freemem函数是否有问题?
      

  4.   

    可是自动释放的,用Setlength分配的内存可以用Finalize来释放
      

  5.   

    你动态分配的内存可能没有有效的释放,导致内存泄漏。用MemProof来检测吧!
      

  6.   

    看SetLength的参数是什么了,如果只是一个单纯的指针,用SetLength(x,0)就是释放内存的,但如果x指向了别的内存指针就应该先释放,否则就变成了垃圾内存了!
      

  7.   

    用的什么数据库?SQL?如果是的话,就是他在吃内存!
    而不是程序……
      

  8.   

    听你的意思,似乎不是什么分配和释放内存合理不合理的问题,而是代码中的BUG导致内存泄漏的问题,仔细检查程序吧,看看有没有使用完但是没有及时释放的内存。
      

  9.   

    楼主的问题其实是如何是从一堆代码中找出内存泄漏的BUG
      

  10.   

    并不是Delphi的问题,而是你的程序的的问题。