attribut zuordnen

Mit [ dem Attribut ] "ACF zuordnen" können Sie die Speicherzuordnung und -freigabe für einen in der IDL-Datei definierten Typ anpassen.

typedef [allocate (allocate-option-list) [, type-attribute-list] ] type-name;

Parameter

allocate-option-list

Gibt eine oder mehrere Speicherbelegungsoptionen an. Wählen Sie entweder einen einzelnen _ Knoten oder alle _ Knoten aus, oder wählen Sie entweder einen von free oder don't _ free oder einen aus jedem Paar aus. Wenn Sie mehrere Optionen angeben, trennen Sie die Optionen durch Kommas.

type-attribute-list

Gibt andere optionale ACF-Typattribute an. Wenn Sie mehrere Typattribute angeben, trennen Sie die Optionen durch Kommas.

type-name

Gibt einen in der IDL-Datei definierten Typ an.

Bemerkungen

Das [ Attribut allocate ] verfügt über die folgenden gültigen Optionen.

Option BESCHREIBUNG
Alle _ Knoten Es wird ein Aufruf zum Zuordnen und Zum Freien von Arbeitsspeicher für alle Knoten verwendet.
Einzelner _ Knoten Es werden viele einzelne Aufrufe ausgeführt, um jedem Knoten Arbeitsspeicher zu reservieren und frei zu geben.
free Gibt Arbeitsspeicher bei Rückgabe aus dem Serverstub frei.
nicht _ kostenlos Gibt bei Rückgabe aus dem Serverstub keinen Arbeitsspeicher frei.

Standardmäßig können die Stubs Speicher für Daten zuordnen, auf die von einem eindeutigen oder vollständigen Zeiger verwiesen wird, indem sie midl _ user _ allocate und midl _ user _ free einzeln für jeden Zeiger aufrufen.

Sie können die Geschwindigkeit Ihrer Anwendung optimieren, indem Sie die Option alle Knoten _ angeben. Diese Option weist den Stub an, die Größe des ganzen Arbeitsspeichers zu berechnen, auf den über den Zeiger des angegebenen Typs verwiesen wird, und einen einzelnen Aufruf von midl zu _ _verwenden. Der Stub gibt den Arbeitsspeicher frei, indem ein Aufruf von midl _ user free (Midl-Benutzer _ frei) aufruft.

Die Option Nicht frei _ leitet den MIDL-Compiler an, einen Serverstub zu generieren, der midl user _ _ free für den angegebenen Typ nicht aufruft. Die Option Nicht frei _ ermöglicht es, dass die Zeigerstrukturen für die Serveranwendung zugänglich bleiben, nachdem der Remoteprozeduraufruf abgeschlossen und an den Client zurückgegeben wurde.

Das [ Attribut allocate ] führt dazu, dass jeder [ ] in-out-Parameter, der ein Zeiger auf einen Typ ist, der mit der Option alle Knoten qualifiziert ist, Speicher neu zuteilen, wenn die Daten nicht geatmet werden. _ Es liegt in der Verantwortung der Anwendung, den zuvor für diesen Parameter zugeordneten Arbeitsspeicher frei zu geben. Beispiel:

typedef struct thistype 
{ 
    [string] char * PTHISTYPE;  
} * PTHISTYPE
HRESULT proc1 ( [in,out] PTHISTYPE * ppthistype);

Der PTHISTYPE-Datentyp wird vom Stub [ ] vor dem Unmarshaling in Out-Richtung neu zugewiesen. Aus diesem Grund muss die Anwendung den Arbeitsspeicher, den sie zuvor für die Daten dieses Parameters zugeordnet hat, frei geben, da ein Arbeitsspeicherverlust auftritt.

Beispiele

/* ACF file */ 
typedef [allocate(all_nodes, dont_free)] PTYPE1; 
typedef [allocate(all_nodes)] PTYPE2; 
typedef [allocate(dont_free)] PTYPE3;

Weitere Informationen

Anwendungskonfigurationsdatei (Application Configuration File, ACF)

In

midl _ user _ allocate

midl _ user _ free

out

Typedef