Sdílet prostřednictvím


Ú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:

dva ukazatele odkazující na stejná datová

Ú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í.