Share via


Die midl_user_free-Funktion

Die midl_user_free-Funktion muss von RPC-Entwicklern bereitgestellt werden. Es gibt Arbeitsspeicher frei, der von midl_user_allocate für die RPC-Stubs und Bibliotheksroutinen zugewiesen wurde. Ihre midl_user_free-Funktion muss mit dem folgenden Prototyp übereinstimmen:

void __RPC_USER midl_user_free(void * pBuffer);

Der pBuffer-Parameter gibt einen Zeiger auf den Arbeitsspeicher an, der freigegeben werden soll. Sowohl die Clientanwendung als auch die Serveranwendung müssen die midl_user_free-Funktion implementieren, es sei denn, Sie kompilieren im OSF-Kompatibilitätsmodus (/osf). Die midl_user_free-Funktion muss in der Lage sein, den gesamten von midl_user_allocate zugewiesenen Speicher frei zu geben.

Anwendungen und Stubs rufen midl_user_free auf, wenn es um zugeordnete Objekte geht:

  • Die Serveranwendung sollte midl_user_free aufrufen, um den von der Anwendung zugewiesenen Arbeitsspeicher freizugeben, z. B. beim Löschen eines dynamisch zugeordneten Datenknotens.
  • Der Serverstub ruft midl_user_free auf, um Arbeitsspeicher auf dem Server freizugeben, nachdem alle [out]-Argumente, [in],[out]-Argumente und der Funktionsrückgabewert ge marshallt wurden.

Beispielsweise implementiert das RPC-Windows-Beispielprogramm, das "Hello, world" anzeigt, midl_user_free in Bezug auf die freie C-Funktion:

void __RPC_USER midl_user_free(void __RPC_FAR * p)
{
    free(p);
}

Hinweis

Wenn das RpcSs-Paket aktiviert ist (z. B. als Ergebnis der Verwendung des Attributs [ enable_allocate], sollte Ihr Serverprogramm RpcSmFree verwenden, um Arbeitsspeicher freizugeben. Weitere Informationen finden Sie unter RpcSs-Speicherverwaltungspaket.