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