Úplné ukazatele
Na rozdíl od jedinečných ukazatelů podporují úplné ukazatele aliasing. To znamená, že několik ukazatelů může odkazovat na stejná data, jak je znázorněno na následujícím obrázku:
Úplný ukazatel má následující charakteristiky:
- Může mít hodnotu null.
- Během volání se může změnit z hodnoty null na nenulovou. Když se hodnota změní na hodnotu non-null, procedura klienta přidělí novou paměť přidělenou při vrácení. Klientský program by měl tuto paměť uvolnit před ukončením.
- Během volání se může změnit z hodnoty non-null na hodnotu null. Když se hodnota změní na hodnotu null, je aplikace zodpovědná za uvolnění paměti.
- Hodnota se může změnit z jedné hodnoty, která není null, na jinou.
- K úložišti, ke kterému může přistupovat celý ukazatel, může být v operaci přístupný jiným ukazatelem nebo názvem.
- Návratová data se zapíšou do existujícího úložiště, pokud ukazatel nemá hodnotu null.
Pomocí atributu [ ptr ] zadejte úplný ukazatel, jak je znázorněno v následujícím příkladu:
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface FullPtrInterface
{
void RemoteFn([in,ptr,string]) char *ptrName1,
[in,ptr,string] char *ptrName2);
}
V tomto příkladu jsou parametry ptrName1 a ptrName 2 definovány jako úplné ukazatele na řetězec. Oba ukazatele mohou odkazovat na stejnou adresu paměti obsahující jeden řetězec.
[ptr] se vyžaduje při poskytování podpory aliasů. Vzhledem k tomu, že vyžaduje nejvíce zpracování všech ukazatelů dostupných v RPC, nedoporučuje se pro většinu aplikací.