有MemProof使用经验的朋友们请进! ( 积分: 300 )

  • 主题发起人 主题发起人 特尔斐
  • 开始时间 开始时间

特尔斐

Unregistered / Unconfirmed
GUEST, unregistred user!
我在使用MemProof时遇到一个问题:
在释放一个只有字符串资源,没有任何执行代码的资源DLL时,总是会有Kind为Error的项目,其Item显示为:"Attempt to free unexisting resource"。试图释放不存在的资源???
可我只是调用了FreeLibray函数啊。
主要是SysInit.pas中的以下两个函数的问题:
procedure ExitThreadTLS;
var
p: Pointer;
begin
if @TlsLast = nil then
Exit;
if TlsIndex <> -1 then begin
p := TlsGetValue(TlsIndex);
if p <> nil then
LocalFree(p);
end;
end;

procedure ExitProcessTLS;
begin
if @TlsLast = nil then
Exit;
ExitThreadTLS;
if TlsIndex <> -1 then
TlsFree(TlsIndex);
end;

对于这种现象,哪位高手能解释一下吗?不胜感激!
 
我在使用MemProof时遇到一个问题:
在释放一个只有字符串资源,没有任何执行代码的资源DLL时,总是会有Kind为Error的项目,其Item显示为:&quot;Attempt to free unexisting resource&quot;。试图释放不存在的资源???
可我只是调用了FreeLibray函数啊。
主要是SysInit.pas中的以下两个函数的问题:
procedure ExitThreadTLS;
var
p: Pointer;
begin
if @TlsLast = nil then
Exit;
if TlsIndex <> -1 then begin
p := TlsGetValue(TlsIndex);
if p <> nil then
LocalFree(p);
end;
end;

procedure ExitProcessTLS;
begin
if @TlsLast = nil then
Exit;
ExitThreadTLS;
if TlsIndex <> -1 then
TlsFree(TlsIndex);
end;

对于这种现象,哪位高手能解释一下吗?不胜感激!
 
估计就是delphi的bug了,今天晚上我把家里的机器也装上了补丁,
然后用memproof一看........没漏洞了!!!!!!
 
谢谢无泪的回复,问题弄清楚了!不是DELPHI的BUG,是我自己的BUG。因为我的项目的主要架构是基于BPL的,但也有一些DLL。编译这些DLL时,勾上“Build with Package”并带上RTL和VCL包编译就行了。
 
后退
顶部