从list中取图标,刷新时内存泄漏 如何解决? ( 积分: 100 )

  • 主题发起人 主题发起人 hitman007260
  • 开始时间 开始时间
各位高手帮忙啊
 
分不够可以在加
 
大富翁就没有明白人吗??
 
你的Timage既然是动态生成了很多,你存入TList后销毁了吗?
你最后只要一个TImage来显示就可以了是吗?反正就是闪烁嘛,里面图片换掉就可以了
 
存入list如何销毁??list只是保存指针 而且也不是创建image时内存泄漏,而是在闪烁时
就是在 image刷新是泄露 我用过bitmap了也不行 不用list循环找 用FindComponent找到
image 再刷新也不行 如果单个的image 没问题 单个的请看http://www.delphibbs.com/delphibbs/dispq.asp?lid=3669409
 
那个bitblt是什么?系统的函数吗?还是你自己定义的?
 
bitblt 是api函数
 
repaint的话是很耗内存
你定时器是多久响应一次,有可能内存还没释放就又下一次响应了
先把Timer1.enable:=fales
//你的代码执行完
Timer1.enable:=true;
 
那就只有减慢闪烁时间????
 
要减慢了 那真的说明
一个Timer事件还没结束 另一个又开始了
那样肯定会……
 
试了 把时间减到 5秒 cpu占用率 从00 到03 到00 内存还是几十k一次不断上涨
 
还是不行啊
 
晕倒 我先下班了~~~~~~~~~不懂不懂 帮不了你了 不好意思 有空继续想吧
 
[:(]还是谢谢你
 
有解决着在加200分
 
楼主你贴的这段代码好像没什么问题
把其它代码贴出来看看
 
只运行
w:= image.Picture .Bitmap.Width ;
h:=image.Picture.Bitmap.Height ;
hdc2:=image.Canvas.Handle;
hdc1:=image.Canvas.Handle ;
bitblt(hdc2,0,0,w,h,hdc1,0,0,notsrccopy);
image.repaint();
也没问题
就是加入tlist后才出问题
把image.repaint();屏蔽了 也没事;
 
还有 不用list循环找 用FindComponent找到
image 再刷新也不行
 
解决的另开贴给200分 总共给300 分阿
 
帮你顶一下,学习中
 
后退
顶部