Anzeigen: Delphi C++
Anzeigeeinstellungen

Gemeinsame Nutzung von Speicher

Aus RAD Studio XE2
Wechseln zu: Navigation, Suche

Nach oben zu Speicherverwaltung - Index

Dieser Abschnitt beschreibt, wie mit dem Speichermanager Speicher gemeinsam genutzt wird. Wenn unter Win32 eine DLL Routinen exportiert, die lange Strings oder dynamische Arrays als Parameter oder als Funktionsergebnis übergeben (entweder direkt oder in Records bzw. Objekten), müssen die DLL und ihre Client-Anwendungen (oder DLLs) denselben Speichermanager verwenden. Dasselbe gilt, wenn eine Anwendung oder DLL mit System.New oder System.GetMem Speicherplatz reserviert, der in einem anderen Modul durch einen Aufruf von System.Dispose oder FreeMem wieder freigegeben wird. Es gibt zwei sich gegenseitig ausschließende Methoden, über die der Speichermanager von einer Anwendung und ihren Bibliotheken gemeinsam genutzt werden kann: ShareMem und SimpleShareMem.

Anmerkung:  Wenn eine DLL statisch an eine Anwendung gelinkt ist, wird die DLL vor der Anwendung initialisiert. Die Anwendung verwendet den Speichermanager der DLL, wenn die Methode SimpleShareMem für beide aufgerufen wird. Nur das Modul, das seinen Speichermanager bereitstellt, kann die Einstellungen des Speichermanagers ändern und die Statistik des Speichermanagers abrufen. Das Ändern der Einstellungen in anderen Modulen hat keine Auswirkungen, da ihre Speichermanager nicht verwendet werden. Es ist möglich, aber selten erforderlich, den Mechanismus des Speichermanagers zur gemeinsamen Nutzung von Speicher manuell zu steuern.

So verwenden Sie ShareMem:

  1. Geben Sie ShareMem als erste Unit in der uses-Klausel des Programms und der Bibliothek an. Ihre Module werden abhängig von der externen Bibliothek BORLNDMM.DLL, wodurch sie zugewiesenen Speicher dynamisch gemeinsam nutzen können.
  2. Verteilen Sie BORLNDMM.DLL mit Ihrer Anwendung oder DLL, die ShareMem verwendet. Wenn eine Anwendung oder DLL ShareMem verwendet, ersetzt BORLNDMM.DLL den Speichermanager dieser Anwendung oder DLL.

So verwenden Sie SimpleShareMem:

  1. Geben Sie SimpleShareMem als erste Unit in der uses-Klausel des Programms und der Bibliothek aller Module an. Das Modul, das als erstes initialisiert wird, stellt seinen Speichermanager für die gemeinsame Nutzung zur Verfügung. Alle Module, die danach initialisiert werden, verwenden den Speichermanager des ersten Moduls.
  2. Das Modul, das als erstes initialisiert wird, stellt seinen Speichermanager für die gemeinsame Nutzung zur Verfügung. Alle Module, die danach initialisiert werden, verwenden den Speichermanager des ersten Moduls.

Siehe auch

Codebeispiele

Frühere Versionen
In anderen Sprachen