Die midl_user_free-Funktion
Die midl_user_free-Funktion muss von RPC-Entwicklern bereitgestellt werden. Sie gibt Arbeitsspeicher frei, der von midl_user_allocate für die RPC-Stubs und Bibliotheksroutinen zugewiesen wird. 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 Speicher an, der freigegeben werden soll. Sowohl Clientanwendung als auch Serveranwendung müssen die midl_user_free-Funktion implementieren, es sei denn, Sie kompilieren in OSF-Kompatibilität (/osf) Modus. Die funktion midl_user_free muss in der Lage sein, alle von midl_user_allocatezugewiesenen Speicher frei zu geben.
Anwendungen und Stubs rufen beim Umgang mit zugeordneten Objekten midl_user_free auf:
- Die Serveranwendung sollte midl_user_free aufrufen, um von der Anwendung zugewiesenen Arbeitsspeicher freizugeben, z. B. beim Löschen eines dynamisch zugeordneten Datenknotens.
- Der Server-Stub ruft midl_user_free auf, um Arbeitsspeicher auf dem Server freizugeben, nachdem alle [out]-Argumente, [in],[out] Argumente und der Funktionsrücklaufwert gemarsiert wurden.
Beispielsweise implementiert das RPC-Windows-Beispielprogramm, das "Hello, world" anzeigt, midl_user_free in Bezug auf die C-Funktion kostenlos:
void __RPC_USER midl_user_free(void __RPC_FAR * p)
{
free(p);
}
Anmerkung
Wenn das RpcSs-Paket aktiviert ist (z. B. als Ergebnis der Verwendung des [enable_allocate]-Attributs), sollte Ihr Serverprogramm RpcSmFree- verwenden, um Arbeitsspeicher freizugeben. Weitere Informationen finden Sie unter RpcSs Memory Management Package.