Delphi 吃内存啊,大家帮帮我! ( 积分: 100 )

  • 主题发起人 主题发起人 ew9980
  • 开始时间 开始时间
E

ew9980

Unregistered / Unconfirmed
GUEST, unregistred user!
我写一个小程序,主程序到Dll调用Form,现在每打开一个Form,吃我2M的内存,关闭没有释放内存,不断增加,真是要命。
我的每个Form的Close事件都用Action:=cafree;

大家有没有碰到这类问题,没有好的办法码?

请高手指教!谢谢
 
我写一个小程序,主程序到Dll调用Form,现在每打开一个Form,吃我2M的内存,关闭没有释放内存,不断增加,真是要命。
我的每个Form的Close事件都用Action:=cafree;

大家有没有碰到这类问题,没有好的办法码?

请高手指教!谢谢
 
你不要运行程序时把所有的窗口都创建,可以做成动态创建,也就是要打开窗体时才创建,
调用的命令是
Form2:=TForm2.Create(self);
Form2.showmodal;
而且在Project菜单下的option中把动态创建的窗体放到右边就行,关闭动态创建的窗体时加 Action:=cafree;
 
那想问问,静态创建的所有窗口怎么释放所占内存资源????
 
当你退出程序的时候,静态窗体的资源就被释放了
 
可能是调用DLL出了问题,你调一次DLL里的窗口就会占一些内存,你要用freelibrary释放占用的资源。
 
窗体都是调用的时候建立的!
 
use bpl

DLL 中使用窗体会有内存泄漏,不过不应该有这么多啊
 
wuwanping说得对,你改一下生成方式不就ok啦
 
不是泄漏,是水库崩塌,Dll窗口里面放了什么,撤销了没有?
 
终于找到原因:
在DLL的Form里面动态Create了两个TQuery,用完没有Free。
但我就搞不明白,两个Query都没有数据,怎么会占了2M的内存呢?
 
有人碰到类似情况不?
 
没碰到,不会2M那么厉害吧,找个空窗口放两个上去看看
 
to:kinneng
是这样啊,我把它Free,就没有占那么多内存了
 
但还是占用了吧,散分散分
 
这是delphi的bug,老早就有人讨论过了,可以看看前几年的问题记录
 
大家随便帮我看看这个问题
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3309660
 
delphi中只要设计到数据表的控件,exe文件就会大涨,其实这并不奇怪!
楼主使用了TQuery而没有及时释放,内存当然会增加了。
 
几乎没有一个数据库控件会完美释放资源的,好像粗制滥造的感觉
 
后退
顶部