hallo zusammen,
hab ein "kleines"
problem mit dieser funktion:
Delphi-Quellcode:
function DeCompressString(input:string):string;
var
InpBuf, OutBuf: Pointer;
OutBytes: Integer;
begin
InpBuf := nil;
OutBuf := nil;
try
GetMem(InpBuf, Length(input));
Move(input[1], InpBuf^, Length(input));
DeCompressBuf(InpBuf, Length(input),0,OutBuf, OutBytes);
SetLength(result,OutBytes);
Move(OutBuf^, result[1], OutBytes);
finally
if InpBuf <> nil then FreeMem(InpBuf);
if OutBuf <> nil then FreeMem(OutBuf);
end;
end;
Unter normalen Umständen funktioniert diese Funktion tadellos.
Falls ich aber nun ein Programm habe, das gleichzeitig ca. 40 Threads am laufen hat
und alle gleichzeitig einen String entpacken gibt es ab und zu (bisher gemessen ca. alle 6500 mal)
einen Fehler bei der Zeile "FreeMem(outBuf)". Und zwar generiert er dort die
Fehlermeldung "Invalid pointer operation".
Was könnte hier das problem sein? Hab langsam echt keine Ahnung mehr...
[edit=sakura] [delphi]Tags Mfg, sakura[/edit]