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;