Q
qiuxueting
Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi5 代码如下,列出系统应用进程标识。
发现有一个问题:CreateToolhelp32Snapshot 每执行一次,内存就减少4K或8K,如果我在
程序中由Timer定时检查某一个进程是否存在,那么,最终将耗尽我的全部内存。
请教各位,如何解决这个的内存消耗问题?
procedure TForm1.Button1Click(Sender: TObject);
var
; pProcessID ; ; ;WORD;
; ContinueLoop ; ;: BOOL;
; FSnapshotHandle : THandle;
; FProcessEntry32 : TProcessEntry32;
begin
; FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);// <- 问题之处
; FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
; ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
; ListBox1.Clear;
; while ContinueLoop do begin
; ; pProcessID := FProcessEntry32.th32ProcessID;
; ; ListBox1.Items.Append(inttostr(pProcessID));
; ; ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
; end;
end;
发现有一个问题:CreateToolhelp32Snapshot 每执行一次,内存就减少4K或8K,如果我在
程序中由Timer定时检查某一个进程是否存在,那么,最终将耗尽我的全部内存。
请教各位,如何解决这个的内存消耗问题?
procedure TForm1.Button1Click(Sender: TObject);
var
; pProcessID ; ; ;WORD;
; ContinueLoop ; ;: BOOL;
; FSnapshotHandle : THandle;
; FProcessEntry32 : TProcessEntry32;
begin
; FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);// <- 问题之处
; FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
; ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
; ListBox1.Clear;
; while ContinueLoop do begin
; ; pProcessID := FProcessEntry32.th32ProcessID;
; ; ListBox1.Items.Append(inttostr(pProcessID));
; ; ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
; end;
end;