Поделиться через


Функция midl_user_free

Функция midl_user_free должна предоставляться разработчиками RPC. Она освобождает память, выделенную midl_user_allocate для заглушки RPC и подпрограмм библиотеки. Функция midl_user_free должна соответствовать следующему прототипу:

void __RPC_USER midl_user_free(void * pBuffer);

Параметр pBuffer указывает указатель на память, которую необходимо освободить. Клиентское приложение и серверное приложение должны реализовать функцию midl_user_free, если только вы не компилируетсяе в режиме совместимости OSF (/osf). Функция midl_user_free должна быть в состоянии освободить все хранилище, выделенное midl_user_allocate.

Приложения и заглушки вызывают midl_user_free при работе с выделенными объектами:

  • Серверное приложение должно вызывать midl_user_free для освобождения памяти, выделенной приложением, например при удалении динамически выделенного узла данных.
  • Заглушка сервера вызывает midl_user_free, чтобы освободить память на сервере после маршалинга всех аргументов [out], [in], [out] аргументов и возвращаемого значения функции.

Например, пример программы RPC Для Windows, отображающей "Hello, world", реализует midl_user_free с точки зрения бесплатной функции C:

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

Заметка

Если пакет RpcSs включен (например, в результате использования атрибута [enable_allocate] программа сервера должна использовать RpcSmFree для освобождения памяти. Дополнительные сведения см. в пакета управления памятью RpcSs.