Вверх ↑
Ответов: 1841
Рейтинг: 369
#1: 2012-11-06 13:07:36 ЛС | профиль | цитата
andrestudio,
nesco писал(а):


if not Assigned(Param) then
Param := NewMemoryStream;

Результат аналогичен предыдущему, т.е. нету его, результата...


Вот тестовая схема:


Add(MainForm,2953706,147,84)
{
Width=200
Height=156
Caption="Test"
Position=1
link(onCreate,6780558:doFindID,[])
}
Add(Timer,14232243,114,159)
{
Interval=16
link(onTimer,8716874:doEvent1,[])
}
Add(CallDllEx,1336247,207,226)
{
DLLName="test.dll"
FuncList=#7:test;;i|
Point(doFuncList)
link(onFunc,1361970:doText,[])
}
Add(EnumProcess,6780558,196,91)
{
Point(onFind)
Point(doGetMemoryInfo)
Point(onGetMemoryInfo)
link(ID,7389318:ReadH,[])
link(onGetMemoryInfo,11127876:doStrCat,[])
}
Add(InlineCode,7389318,196,49)
{
VarPoints=#5:ReadH|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,Windows,Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|3: |9: public|45: procedure ReadH(var dt:TData; idx:word);|1: |5: end;|0:|14:implementation|0:|28:procedure THiAsmClass.ReadH;|7: begin|39: dtInteger(dt, GetCurrentProcessId);|6: end;|4:end.|
}
Add(Label,6485872,290,105)
{
Left=5
Top=30
Width=129
Height=17
Caption="Занимаемая память: "
}
Add(Hub,8716874,159,159)
{
OutCount=3
link(onEvent1,6780558:doGetMemoryInfo,[(185,165)(185,118)])
link(onEvent2,10648183:doData,[])
link(onEvent3,1336247:doFuncList,[(185,179)(185,239)])
}
Add(Label,1361970,256,226)
{
Left=65
Top=85
}
Add(CallDllEx,4043074,244,166)
{
DLLName="test.dll"
link(onFunc,14452773:doText,[])
}
Add(Label,14452773,291,166)
{
Left=65
Top=65
}
Add(DoData,10648183,196,166)
{
Data=String(test;;i)
link(onEventData,4043074:doCallFuncStr,[])
}
Add(InfoTip,15500678,189,147)
{
Info=#18:1-й вариант утечки|
Width=148
Height=60
}
Add(InfoTip,1317398,189,210)
{
Info=#18:2-й вариант утечки|
Width=148
Height=60
}
Add(StrCat,11127876,241,105)
{
Str1="Занимаемая память: "
link(onStrCat,6485872:doText,[])
}
Тестовая схема sha: http://dl.dropbox.com/u/6869303/HiAsm/findbugs/dllex/test.sha
Тестовая dll: http://dl.dropbox.com/u/6869303/HiAsm/findbugs/dllex/test.dll
Исходник dll (PB):
ProcedureDLL test() 
  ProcedureReturn Random(100000) 
EndProcedure
Библиотеку можно вообще не подключать, главное обращаться к методам doCallFuncStr или doFuncList и утечка всё-равно будет...
карма: 1
0