Condividi tramite


Puntatori e allocazione di memoria

La possibilità di modificare la memoria tramite puntatori richiede spesso che il server e il client allocano memoria sufficiente per gli elementi nella matrice.

Quando uno stub deve allocare o liberare memoria, chiama funzioni della libreria di runtime che a sua volta chiamano le funzioni midl_user_allocate e midl_user_free. Queste funzioni non sono incluse come parte della libreria di runtime. È necessario scrivere versioni personalizzate di queste funzioni e collegarle all'applicazione. In questo modo, è possibile decidere come gestire la memoria. Quando si compila il file IDL in modalità OSF-compatibility (/osf), non è necessario implementare queste funzioni. È necessario scrivere queste funzioni nei prototipi seguenti:

void __RPC_FAR * __RPC_API midl_user_allocate(size_t len)

void __RPC_API midl_user_free(void __RPC_FAR * ptr)

Ad esempio, le versioni di queste funzioni per un'applicazione possono semplicemente chiamare funzioni della libreria standard:

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