ok, bin jetzt einen kleinen Schritt weiter. Meine Vermutung ist, dass die Referenzzählung in Verbindung mit der C#
DLL bei mir Probleme macht. Darum wäre meine Quick&Dirty Lösung, dass ich direkt beim Beenden der Methode in den Referenzzähler reinpfusche:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
TransportList: ITransportListIntf;
MediaList: TMediaArray;
i, j: Integer;
begin
TransportList := TTransportList.Create;
try
getMediaList( TransportList );
// <--- hier wird die C# DLL Methode aufgerufen
TransportList.getList( MediaList );
finally
if TransportList <>
nil then
begin
j := TransportList._AddRef;
for i := j
downto 2
do TransportList._Release;
//<----- setze manuell den Referenzzähler
end;
end;
end;
Damit gibt es nun keine Meldung von Fastmm, dass es einen Speicherleck gibt. Meine Frage an die Experten: Ist es total verwerflich, was ich da mache? Und gibt es da einen besseren Weg?