Penunjuk Penuh

Tidak seperti pointer unik , penunjuk penuh mendukung alias. Ini berarti bahwa beberapa pointer dapat merujuk ke data yang sama, seperti yang diperlihatkan dalam gambar berikut:

dua pointer yang mereferensikan data yang sama

Penunjuk penuh memiliki karakteristik berikut:

  • Ini dapat memiliki nilai null.
  • Ini dapat berubah dari null ke non-null selama panggilan. Ketika nilai berubah menjadi non-null, stub klien mengalokasikan memori baru yang dialokasikan saat dikembalikan. Program klien harus membebaskan memori ini sebelum berakhir.
  • Ini dapat berubah dari non-null ke null selama panggilan. Ketika nilai berubah menjadi null, aplikasi bertanggung jawab untuk membebaskan memori.
  • Nilai dapat berubah dari satu nilai bukan null ke nilai lainnya.
  • Penyimpanan yang titik penunjuk penuh dapat diakses oleh pointer atau nama lain dalam operasi.
  • Data pengembalian ditulis ke penyimpanan yang ada jika penunjuk tidak memiliki nilai null.

Gunakan atribut [ ptr ] untuk menentukan penunjuk penuh, seperti yang ditunjukkan dalam contoh berikut:

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

Dalam contoh ini, parameter ptrName1 dan ptrName2 didefinisikan sebagai penunjuk penuh ke string. Dimungkinkan bagi kedua pointer untuk menunjuk ke alamat memori yang sama yang berisi string tunggal.

[ptr] diperlukan saat memberikan dukungan alias. Namun, karena membutuhkan pemrosesan terbanyak dari semua pointer yang tersedia di RPC, tidak disarankan untuk sebagian besar aplikasi.