求助TCanvas内存无限涨的问题
求助TCanvas内存无限涨的问题 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20061110220830160.html
procedure XXX;
var
Dc: Hdc;
Mc: TCanvas;
begin
Dc := GetDc(0);
Mc := TCanvas.Create;
try
Mc.Handle := Dc;
{此部分用Mc画图...省略}
finally
Mc.Free;
ReleaseDC(0, Dc)
end
end;
上面这段用TCanvas画图的程序,需要循环调用好多次(认为是无数次好了),但是我发现运行当中随着时间的增长... 内存也暴涨... 很快就暴了...
本人初学图形编程,头一次暴了以后,经过查阅资料,发现忘加了ReleaseDC及Mc.Free,便改正了
但是改正后的程序,仍然内存暴涨... 求助各位高手
http://www.delphi2007.net/DelphiMultimedia/html/delphi_20061110220830160.html
procedure XXX;
var
Dc: Hdc;
Mc: TCanvas;
begin
Dc := GetDc(0);
Mc := TCanvas.Create;
try
Mc.Handle := Dc;
{此部分用Mc画图...省略}
finally
Mc.Free;
ReleaseDC(0, Dc)
end
end;
上面这段用TCanvas画图的程序,需要循环调用好多次(认为是无数次好了),但是我发现运行当中随着时间的增长... 内存也暴涨... 很快就暴了...
本人初学图形编程,头一次暴了以后,经过查阅资料,发现忘加了ReleaseDC及Mc.Free,便改正了
但是改正后的程序,仍然内存暴涨... 求助各位高手
另外,补充一下
这段程序是作为DLL,为其他程序所用的
所以每次都需要GetDc和TCanvas.Create
请高手对症下药... 怎样正确的释放内存
重复调用XXX时就重复创建Mc := TCanvas.Create,而没有释放,所以内存无限上涨
就这几行代码你重复调用试试,还增长吗?
如果不增长,那就是你省略的代码的问题
应该是你省略掉的代码有问题 用AQTime查一下就知道了
ReleaseDC(0, Dc)
是否有问题啊?
---------------------
矢量组件 http://www.codeidea.com/cn/