Funkcja midl_user_free
Funkcja midl_user_free musi być dostarczana przez deweloperów RPC. Zwalnia pamięć przydzieloną przez midl_user_allocate dla wycinków RPC i procedur biblioteki. Funkcja midl_user_free musi być zgodna z następującym prototypem:
void __RPC_USER midl_user_free(void * pBuffer);
Parametr pBuffer określa wskaźnik do pamięci, która ma zostać zwolniona. Zarówno aplikacja kliencka, jak i aplikacja serwera muszą implementować funkcję midl_user_free, chyba że kompilujesz w trybie zgodności systemu operacyjnego (/osf). Funkcja midl_user_free musi mieć możliwość zwolnienia wszystkich magazynów przydzielonych przez midl_user_allocate.
Aplikacje i wycinki wywołają midl_user_free podczas pracy z przydzielonymi obiektami:
- Aplikacja serwera powinna wywoływać midl_user_free, aby zwolnić pamięć przydzieloną przez aplikację, na przykład podczas usuwania dynamicznie przydzielonego węzła danych.
- Wycinków serwera wywołuje midl_user_free, aby zwolnić pamięć na serwerze po przeprowadzeniu marshalingu wszystkich argumentów [out], [in],[out] argumentów i zwracanej wartości funkcji.
Na przykład przykładowy program RPC dla systemu Windows, który wyświetla komunikat "Hello, world" implementuje midl_user_free pod względem bezpłatnej funkcji języka C:
void __RPC_USER midl_user_free(void __RPC_FAR * p)
{
free(p);
}
Nuta
Jeśli pakiet RpcSs jest włączony (na przykład w wyniku użycia atrybutu [ enable_allocate]), program serwera powinien użyć RpcSmFree do zwolnienia pamięci. Aby uzyskać więcej informacji, zobacz RpcSs Memory Management Package.