Udostępnij za pośrednictwem


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.