Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tidak seperti pointer unik, penunjuk penuh mendukung alias. Ini berarti bahwa beberapa pointer dapat merujuk ke data yang sama, seperti yang ditunjukkan pada 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 non-null ke nilai lainnya.
- Penyimpanan yang titik penunjuk penuh dapat diakses oleh penunjuk atau nama lain dalam operasi.
- Mengembalikan data ditulis ke penyimpanan yang ada jika pointer 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 pointer penuh ke string. Dimungkinkan bagi kedua pointer untuk menunjuk ke alamat memori yang sama yang berisi satu string.
[ptr] diperlukan saat memberikan dukungan aliasing. Namun, karena membutuhkan pemrosesan paling banyak dari semua pointer yang tersedia di RPC, tidak disarankan untuk sebagian besar aplikasi.