Megosztás a következőn keresztül:


Teljes mutató

Az egyedi mutatókkal ellentétben a teljes mutatók támogatják az aliasolást. Ez azt jelenti, hogy több mutató is hivatkozhat ugyanazokra az adatokra, ahogyan az az alábbi ábrán látható:

két mutató ugyanarra az adatra hivatkozik

A teljes mutató a következő jellemzőkkel rendelkezik:

  • Null értékű lehet.
  • A hívás során null értékről nem null értékre válthat. Ha az érték nem null értékűre változik, az ügyfél csonkja a visszaadott új memóriát foglalja le. Az ügyfélprogramnak szabadíthatja fel ezt a memóriát, mielőtt leáll.
  • A hívás során nem null értékről null értékre válthat. Ha az érték null értékűre változik, az alkalmazás feladata a memória felszabadítása.
  • Az érték egy nem null értékű értékről egy másikra változhat.
  • A teljes mutatóra mutató tárterületet a művelet egy másik mutatója vagy neve érheti el.
  • A visszaadott adatok meglévő tárolóba lesznek írva, ha a mutató nem rendelkezik null értékkel.

A [ptr] attribútummal adjon meg egy teljes mutatót, ahogyan az a következő példában látható:

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

Ebben a példában a ptrName1 és ptrName2 paraméterek egy sztringre mutató teljes mutatóként vannak definiálva. Mindkét mutató ugyanarra a memóriacímre mutathat, amely egyetlen sztringet tartalmaz.

[ptr] szükséges az aliasok támogatásához. Mivel azonban az RPC-ben elérhető összes mutató legtöbb feldolgozását igényli, a legtöbb alkalmazáshoz nem ajánlott.