Delen via


Volledige aanwijzers

In tegenstelling tot unieke aanwijzers ondersteunen volledige aanwijzers aliasing. Dit betekent dat meerdere aanwijzers naar dezelfde gegevens kunnen verwijzen, zoals wordt weergegeven in de volgende afbeelding:

twee aanwijzers die verwijzen naar dezelfde gegevens

Een volledige aanwijzer heeft de volgende kenmerken:

  • De waarde kan null zijn.
  • Deze kan tijdens de aanroep veranderen van null in niet-null. Wanneer de waarde wordt gewijzigd in niet-null, wijst de client-stub nieuw geheugen toe dat is toegewezen bij retour. Het clientprogramma moet dit geheugen vrijmaken voordat het wordt beëindigd.
  • Het kan tijdens het aanroepen veranderen van niet-null in null. Wanneer de waarde verandert in null, is de toepassing verantwoordelijk voor het vrijmaken van het geheugen.
  • De waarde kan worden gewijzigd van de ene niet-null-waarde naar de andere.
  • De opslag waarnaar een volledige aanwijzer verwijst, kan worden geopend door een andere aanwijzer of naam in de bewerking.
  • Retourgegevens worden naar de bestaande opslag geschreven als de aanwijzer niet de waarde null heeft.

Gebruik het kenmerk [ptr] om een volledige aanwijzer op te geven, zoals wordt weergegeven in het volgende voorbeeld:

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

In dit voorbeeld worden de parameters ptrName1 en ptrName2 gedefinieerd als volledige aanwijzers naar een tekenreeks. Het is mogelijk dat beide aanwijzers verwijzen naar hetzelfde geheugenadres dat één tekenreeks bevat.

[ptr] is vereist bij het bieden van ondersteuning voor aliassen. Omdat hiervoor echter de meeste verwerking van alle beschikbare aanwijzers in RPC is vereist, wordt het niet aanbevolen voor de meeste toepassingen.