Wskaźniki i alokacja pamięci
Możliwość zmiany pamięci za pomocą wskaźników często wymaga, aby serwer i klient przydzielili wystarczającą ilość pamięci dla elementów w tablicy.
Gdy element wycinkowy musi przydzielić lub zwolnić pamięć, wywołuje funkcje biblioteki czasu wykonywania, które z kolei wywołają funkcje midl_user_allocate i midl_user_free. Te funkcje nie są uwzględniane w ramach biblioteki czasu wykonywania. Musisz napisać własne wersje tych funkcji i połączyć je z aplikacją. W ten sposób możesz zdecydować, jak zarządzać pamięcią. Podczas kompilowania pliku IDL w trybie zgodności systemu operacyjnego (/osf) nie trzeba implementować tych funkcji. Te funkcje należy napisać w następujących prototypach:
void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)
void __RPC_API midl_user_free(void __RPC_FAR * ptr)
Na przykład wersje tych funkcji dla aplikacji mogą po prostu wywoływać standardowe funkcje biblioteki:
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);
}