Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
Delphi 6 Enterprise
|
Erzeugt Funktion mit AllocMem ein Memory-Leak?
8. Aug 2014, 12:42
Hallo,
ich habe die folgende Funktion im Netz gefunden und bereits leicht angepasst, um zu sehen, ob eine bestimmte Datei gedruckt wird. Kann das sein, das diese Funktion ein Memory-Leak erzeugt, da der mit AllocMem reservierte speicher nicht wieder frei gegeben wird? Wie und wo im Code würde man das machen? FreeMem im finally?
Delphi-Quellcode:
function TPDFPrinter.FileInPrinterQueue: Boolean;
type
TJobs = array [0..1000] of JOB_INFO_1;
PJobs = ^TJobs;
var
hPrinter: THandle;
bytesNeeded, numJobs, i: Cardinal;
pJ: PJobs;
begin
Result:=false;
hPrinter := GetCurrentPrinterHandle;
try
EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);
pJ := AllocMem(bytesNeeded);
if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then
RaiseLastWin32Error;
if numJobs>0 then
for i := 0 to Pred(numJobs) do
if UpperCase(SavePChar(pJ^[i].pDocument))=UpperCase(Filename) then
begin
Result:=True;
break;
end;
finally
ClosePrinter(hPrinter);
end;
end;
Ralph
|
|
Zitat
|