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


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

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

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