Указатели и выделение памяти
Возможность изменять память с помощью указателей часто требует, чтобы сервер и клиент выделили достаточно памяти для элементов в массиве.
Если заглушка должна выделить или освободить память, она вызывает функции библиотеки времени выполнения, которые, в свою очередь, вызывают функции midl_user_allocate и midl_user_free. Эти функции не включаются в библиотеку времени выполнения. Вам нужно написать собственные версии этих функций и связать их с приложением. Таким образом, вы можете решить, как управлять памятью. При компиляции IDL-файла в режиме совместимости OSF (/osf) не требуется реализовать эти функции. Эти функции необходимо записать в следующие прототипы:
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
Например, версии этих функций для приложения могут просто вызывать стандартные функции библиотеки:
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
{
return(malloc(len));
}
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
{
free(ptr);
}