Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In der folgenden Tabelle sind die wichtigsten Regeln für die Speicherzuweisung zusammengefasst.
| MIDL-Element | Beschreibung |
|---|---|
| [Bezug] Zeiger der obersten Ebene | Muss nicht NULL-Zeiger sein. |
| Rückgabewert der Funktion | Neuer Speicher wird immer für Zeigerrücklaufwerte zugewiesen. |
| [ eindeutigen, ] oder [ ptr, out] Zeiger] | Nicht zulässig von MIDL. |
| Nicht oberste Ebene [eindeutigen, in, ] oder [ptr, in, out] Zeiger, der sich von Null in ungleich Null ändert | Client-Stubs weisen beim Zurückgeben neuen Speicher auf dem Client zu. |
| Nicht oberste Ebene [eindeutigen, in, ] Zeiger, der sich von ungleich Null in Null ändert | Der Speicher ist auf dem Client verwaist; Die Clientanwendung ist dafür verantwortlich, Arbeitsspeicher freizugeben und Lecks zu verhindern. |
| Nicht oberste Ebene [ptr, in, out] Zeiger, der sich von ungleich Null in Null ändert | Speicher wird auf dem Client verwaist, wenn kein Alias vorhanden ist. Die Clientanwendung ist dafür verantwortlich, Speicherverluste in diesem Fall freizugeben und zu verhindern. |
| [Verweis] Zeiger | Clientanwendungsebene wird in der Regel zugewiesen. |
| Ungleich NULL [in, ] Zeiger | Stubs versuchen, in vorhandenen Speicher auf dem Client zu schreiben. Wenn [Zeichenfolge] und die Größe über die auf dem Client zugewiesene Größe hinaus zunimmt, führt dies zur Rückgabe eines GP-Fehlers. |
In der folgenden Tabelle sind die Auswirkungen von Schlüssel-IDL- und ACF-Attributen auf die Speicherverwaltung zusammengefasst.
| MIDL-Funktion | Clientprobleme | Serverprobleme |
|---|---|---|
| [ (single_node)], [allocate(all_nodes)] | Bestimmt, ob ein oder mehrere Aufrufe an die Speicherfunktionen vorgenommen werden. | Identisch mit dem Client, mit Ausnahme des privaten Speichers, kann häufig für die Zuordnung (single_node) [in] und [in,out]-Daten verwendet werden. |
| [Zuweisung(frei)] oder [Zuweisung(dont_free)] | (Keine; wirkt sich auf den Server aus.) | Bestimmt, ob der Arbeitsspeicher auf dem Server nach jedem Remoteprozeduraufruf freigegeben wird. |
| Arrayattribute [ max_is] und [ size_is] | (Keine; wirkt sich auf den Server aus.) | Bestimmt die Größe des zuzuordnenden Arbeitsspeichers. |
| [ byte_count] | Der Client muss Puffer zuweisen; nicht von Client-Stubs zugewiesen oder freigegeben. | Das ACF-Parameter-Attribut bestimmt die Größe des auf dem Server zugeordneten Puffers. |
| [ enable_allocate] | In der Regel keine. Der Client verwendet jedoch möglicherweise eine andere Speicherverwaltungsumgebung. | Server verwendet eine andere Speicherverwaltungsumgebung. rpcSmAllocate sollte für Zuordnungen verwendet werden. |
| [ in]-Attribut | Clientanwendung, die für die Zuordnung des Speichers für Daten verantwortlich ist. | Von Stubs auf dem Server zugewiesen. |
| [ ] Attribut | Zugewiesen auf dem Client durch Stubs. | []-zeiger muss [Bezug] Zeiger sein; von Stubs auf dem Server zugewiesen. |
| [ Ref] Attribut | Der vom Zeiger referenzierte Speicher muss von der Clientanwendung zugewiesen werden. | Von Stubs verwaltete Referenzzeiger auf oberster Ebene und Referenzzeiger der ersten Ebene. |
| [ eindeutiges] Attribut | Nicht null bis NULL kann zu verwaisten Arbeitsspeicher führen; null zu ungleich null bewirkt, dass der Client-Stub midl_user_allocateaufruft. | (Wirkt sich auf den Client aus.) |
| [ ptr] Attribut | (Siehe [ eindeutige].) | (Siehe [ eindeutige].) |