![]() |
Variants wer entsorgt Speicherplatz ?
Hallo eine Verständnisfrage.
In einem Com Server erzeuge ich ein variantes Array und fülle dieses:
Delphi-Quellcode:
Im Client hole ich die Daten ab und verarbeite diese.
function TebmTechnologieStack.GetData: OleVariant;
begin result := VarArrayCreate([0, 100], varVariant);
Delphi-Quellcode:
Wer gibt jetzt die dynamischen Bereiche wieder frei ?
v := Com.GetData;
SavetoList(PSafeArray(VarArrayAsPSafeArray(v))); ActiveX.SafeArrayDestroyData(PSafeArray(TVarData(v ).VArray)); ActiveX.SafeArrayDestroy(PSafeArray(TVarData(v).VA rray)); bringt einen Fehler, wenn der Zugriffsbereich der Variablen verlassen wird. Also entweder bei Procedureende, was ja noch in Ordnung wäre, oder aber bei Programmende, wenn es eine globale Variable war. Der Speichermanager zeigt in keinem Fall ein Speicherleak an. Kann ich nit der Anweisung v : oleVariant; . . . v := unsasigned; den Speicherbereich explizit freigeben? Die Funktion soll eine Vielzahl von Blöcken vom Com-Server holen, ich möchte vermeiden das sich Speicher-Leaks ansammeln. Für einen Tip dankbar. Gruß Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz