Указатели и выделение памяти
Для изменения памяти с помощью указателей часто требуется, чтобы сервер и клиент выделили достаточно памяти для элементов в массиве.
Когда заглушка должна выделять или освобождать память, она вызывает функции библиотеки времени выполнения, которые, в свою очередь, вызывают функции 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);
}