读书人

请教下面这个函数什么地方内存泄漏了

发布时间: 2012-06-07 15:05:14 作者: rapoo

请问下面这个函数什么地方内存泄漏了?

Delphi(Pascal) code
function ProcedureIsExists(AppName:string):Boolean;     //判断一个程序是否已经运行var    lppe: TProcessEntry32;    ssHandle: THandle;    AppFound,findqq:   Boolean;    Wnd:   HWND;begin    Result := False;    ssHandle   :=   CreateToolHelp32SnapShot(TH32CS_SNAPALL,   0);    lppe.dwSize   :=   SizeOf(lppe);    AppFound   :=   Process32First(sshandle,   lppe);    while AppFound   do    begin      //其中lppe.szExefile就是程序名**********************************************      if UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AppName)   then      begin          Result := True;          Exit;      end;      AppFound := Process32Next(ssHandle,lppe);    end;end;


我在一个线程里调用这个函数,结果导致程序的错误页面不断增加,把测试机的内存全部耗完了,不知道是这个函数里的什么地方导致的,请大家帮我看看,谢谢

[解决办法]
CloseToolhelp32Snapshot

[解决办法]
function ProcedureIsExists(AppName:string):Boolean;stdcall;//加上这个试试。
还有就是检查下调用是否有死循环,及哪些对象要释放。说明一下。有几个函数我也不知道什么意思,不对莫怪哈。
[解决办法]
在退出这个函数前加上一个CloseHandle(ssHandl);试试。

读书人网 >.NET

热点推荐