Udostępnij za pośrednictwem


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);
}