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