delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
求助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,便改正了  
   
  但是改正后的程序,仍然内存暴涨...   求助各位高手

另外,补充一下  
   
  这段程序是作为DLL,为其他程序所用的  
  所以每次都需要GetDc和TCanvas.Create  
   
  请高手对症下药...   怎样正确的释放内存

重复调用XXX时就重复创建Mc   :=   TCanvas.Create,而没有释放,所以内存无限上涨

就这几行代码你重复调用试试,还增长吗?  
  如果不增长,那就是你省略的代码的问题

应该是你省略掉的代码有问题   用AQTime查一下就知道了

ReleaseDC(0,   Dc)  
  是否有问题啊?  
   
  ---------------------  
  矢量组件   http://www.codeidea.com/cn/

posted on 2008-11-05 09:37 delphi2007 阅读(452) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。