Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Till skillnad från unika pekare stöder fullständiga pekare alias. Det innebär att flera pekare kan referera till samma data, som du ser i följande bild:
En fullständig pekare har följande egenskaper:
- Det kan ha värdet null.
- Den kan ändras från null till icke-null under anropet. När värdet ändras till icke-null allokerar klientens stub nytt minne som allokerats vid retur. Klientprogrammet bör frigöra det här minnet innan det avslutas.
- Den kan ändras från icke-null till null under anropet. När värdet ändras till null ansvarar programmet för att frigöra minnet.
- Värdet kan ändras från ett värde som inte är null till ett annat.
- Lagringen som en fullständig pekare pekar på kan nås av en annan pekare eller ett annat namn i åtgärden.
- Returdata skrivs till befintlig lagring om pekaren inte har värdet null.
Använd attributet [ ptr ] för att ange en fullständig pekare, som du ser i följande exempel:
/* 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);
}
I det här exemplet definieras parametrarna ptrName1 och ptrName2 som fullständiga pekare till en sträng. Det är möjligt för båda pekarna att peka på samma minnesadress som innehåller en enda sträng.
[ptr] krävs när du tillhandahåller aliasstöd. Men eftersom det kräver mest bearbetning av alla pekare som är tillgängliga i RPC rekommenderas det inte för de flesta program.