Tam İşaretçiler
benzersiz işaretçilerinden farklı olarak, tam işaretçiler diğer adları destekler. Bu, aşağıdaki şekilde gösterildiği gibi birden çok işaretçinin aynı verilere başvurabileceği anlamına gelir:
aynı veri
Tam işaretçi aşağıdaki özelliklere sahiptir:
- Null değerine sahip olabilir.
- Çağrı sırasında null olandan null olmayana dönüşebilir. Değer null olmayan olarak değiştiğinde, istemci saplaması dönüşte ayrılan yeni belleği ayırır. İstemci programı sonlanmadan önce bu belleği boşaltmalıdır.
- Çağrı sırasında null olmayandan null olarak değişebilir. Değer null olarak değiştiğinde, uygulama belleği boşaltmaktan sorumludur.
- Değer, null olmayan bir değerden diğerine değişebilir.
- Tam işaretçinin işaret ettiği depolamaya işlemdeki başka bir işaretçi veya ad tarafından erişilebilir.
- İşaretçi null değerine sahip değilse dönüş verileri mevcut depolama alanına yazılır.
Aşağıdaki örnekte gösterildiği gibi tam işaretçi belirtmek için [ ptr ] özniteliğini kullanın:
/* 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);
}
Bu örnekte ptrName1 ve ptrName2 parametreleri bir dizenin tam işaretçileri olarak tanımlanır. her iki işaretçinin de tek bir dize içeren aynı bellek adresini işaret etmek mümkündür.
Diğer ad desteği sağlanırken [ptr] gereklidir. Ancak, RPC'de kullanılabilen tüm işaretçilerin en iyi şekilde işlenmesini gerektirdiğinden, çoğu uygulama için önerilmez.