Sejauh yang saya pahami, yang dimaksud manajemen memory di sini adalah yang berkaitan dengan memory RAM.
Pointer digunakan untuk "menunjuk" alamat memory.
Misalnya dalam sebuah array bola terdapat bola merah, hijau dan biru.
Jika tanpa pointer maka harus secara eksplisit menunjuk warna bola. Dengan pointer dapat menunjuk dengan istilah bola "pertama", "kedua" dan seterusnya tanpa memperhatikan nilainya.
Penggunaan pointer juga dapat mempercepat sebuah loop.
Misalnya kode seperti ini:
- Code: Select all
int hasil; // variabel global
int main()
{
for (i=0;i<1000;i++)
{
for(j=0;j<1000;j++)
{
// lakukan operasi aritmetik melalui fungsi yang mengembalikan nilai 7 setiap iterasi
hasil = jumlah(3,4);
};
};
};
// Fungsi "jumlah" yang mengembalikan nilai
int jumlah(int x, int y)
{
return(x+y);
};
dibandingkan kode di atas, maka kode di bawah ini akan berjalan lebih cepat:
- Code: Select all
int hasil; // variabel global
int main()
{
for (i=0;i<1000;i++)
{
for(j=0;j<1000;j++) // total inner loop dan outer loop adalah 1 juta kali
{
// lakukan operasi aritmetik melalui fungsi yang mengembalikan nilai 7 setiap iterasi, yang langsung memodifikasi variabel "hasil"
jumlah(3,4,&hasil);
};
};
};
// Fungsi "jumlah" yang tidak mengembalikan nilai, namun langsung memodifikasi parameter "hasilnya" yang menggunakan referensi alamat memory.
void jumlah(int x, int y, int *hasilnya)
{
hasilnya=x+y;
};
Barangkali ada yang sedikit keliru di kode di atas, namun pada intinya adalah penggunaan pointer yang tepat dapat mempercepat sebuah proses secara signifikan.
Pada Visual Basic, penggunaan pointer untuk referensi dapat digunakan pada parameter sebuah sub atau function dengan awalan "ByRef".
Secara default, VB6 menggunakan "ByRef" untuk setiap parameter. Jika ingin menggunakan nilai, maka secara eksplisit harus dinyatakan dengan "ByVal".
Namun pada VB.NET, hal ini tidak berlaku lagi. Secara default justru menggunakan nilai sebagai data yang dikirim untuk parameter, sehingga jika ingin menggunakan alamat variabel harus dinyatakan secara eksplisit menggunakan "ByRef".
Demikian yang saya tau.