教程-在Delphi中怎么查看是否有内存泄漏(Delphi2007)+WIN7
相关资料:
1.http://bbs.csdn.net/topics/390630932?page=1
PS:
1.本实例D2007及以上版本支持。
2.检测内存工具 EurekaLog fastmm
实例代码:
Project1.dpr:
1 program Project1; 2 3 uses 4 Forms, 5 Unit1 in 'Unit1.pas' {Form1}; 6 7 {$R *.res} 8 9 begin 10 Application.Initialize; 11 ReportMemoryLeaksOnShutdown := True; //加入该行,在程序运行并关闭后会提示你什么对象在哪里泄露了 12 Application.MainFormOnTaskbar := True; 13 Application.CreateForm(TForm1, Form1); 14 Application.Run; 15 end.
Unit1.pas:
1 unit Unit1; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, StdCtrls; 8 9 type 10 TForm1 = class(TForm) 11 Button1: TButton; 12 procedure Button1Click(Sender: TObject); 13 private 14 { Private declarations } 15 public 16 { Public declarations } 17 end; 18 19 var 20 Form1: TForm1; 21 22 implementation 23 24 {$R *.dfm} 25 26 procedure TForm1.Button1Click(Sender: TObject); 27 var 28 oForm2: TForm1; 29 begin 30 oForm2 := TForm1.Create(nil); 31 try 32 finally 33 //oForm2.Free; 34 end; 35 end; 36 37 end.
运行效果:
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
1 - 12 bytes: Unknown x 3
13 - 20 bytes: TList x 4, String x 2, Unknown x 3
21 - 28 bytes: TIconImage x 1, TPen x 1, TBrush x 3
29 - 36 bytes: TPadding x 2, TMargins x 2, TSizeConstraints x 2, TFont x 3, Unknown x 2
37 - 44 bytes: TGlassFrame x 1
45 - 52 bytes: TIcon x 1
61 - 68 bytes: Unknown x 1
69 - 76 bytes: TControlScrollBar x 2
93 - 100 bytes: TControlCanvas x 1
573 - 620 bytes: TButton x 1
797 - 876 bytes: TForm1 x 1
---------------------------
确定
---------------------------
欢迎关注我,一起进步!扫描下方二维码即可加我