这是我的错吗?(100分)

  • 主题发起人 主题发起人 dreaminst
  • 开始时间 开始时间
D

dreaminst

Unregistered / Unconfirmed
GUEST, unregistred user!
我通过视频抓拍后,把图片转为JPG格式存入数据库,发现每存一次,内存总会增加少量,请高手看看,这是为什么?


procedure Tfrm_parkvmain.pr_savejpgtodb(i_recno:integer);
var
query:Tadoquery;
m_jpegstream:Tmemorystream;
begin
query:=Tadoquery.Create(nil);
m_JpegStream := TMemoryStream.Create;
try
query.ConnectionString:=vgs_connstr;//vgs_connstr数据库连接字符串

ima_in.Picture.Graphic.SaveToStream(m_jpegstream);
query.SQL.Clear;
query.SQL.Add('exec pr_catchimage :image_in');
query.Parameters.ParamByName('image_in').LoadFromStream
(m_JpegStream,ftblob);
try
query.Open;
vgr_passrecord[i_recno-1].photoID:=query.fieldbyname('photoid').asinteger;
except
end;
finally
query.Close;
query.Free;
m_jpegstream.Free;
end;
end;


//以下为数据库存储过程

CREATE procedure pr_catchimage --车辆入场保存图片
@image_in image
as
insert into t_carphoto values(@image_in) --插入图片
select max(photoid) as photoid from t_carphoto --得出当前插入记录的PHOTOID(编号)
;
 
肯定是你的错,你查一下是不是没有释放什么
 
发表意见的人没有吗?
 
TO:ljlljl-79
查我是自然有查过,问题是可能我自己查不出来,才来向大伙求助呀,能告诉我问题在哪吗?
 
在Windows下面编程就是这样,早就习惯了.
比如说QQ,刚进入时大概占2M内存,聊了三个小时就变成14M
IE,只开一个窗口浏览网页,,最多的时候占了20M内存
还有Windows本身也是这样,开机时大概60~80M,经过几个小时就变成了130M,160M等
最惨的是少掉的内存怎么也找不回来,唯一的办法就是重启.
 
dreaminst,
你的代码,我看了一下,没发现什么不对的。

query.Free;
m_jpegstream.Free;
换成:
FreeAndNil(query);
FreeAndNil(m_jpegstream);
试试


也可能,是系统的问题,这根本就不内存泄漏呢?
:P

 
谢谢几位,看来也只能如此了,还好它每次增加的内存不是很大,这样按数据量算算,我的程序跑个十五天半一个月好象没什么问题,那先就这样吧,如果有什么更好的建议,欢迎大家赐教!
 
多人接受答案了。
 
后退
顶部