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


Указатели и выделение памяти

Для изменения памяти с помощью указателей часто требуется, чтобы сервер и клиент выделили достаточно памяти для элементов в массиве.

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