Alokasi dan Dealokasi Memori Dinamis pada C++
By
Rachmat Santoso
—
Selasa, 25 April 2017
—
Cplusplus
Contoh Program Alokasi dan Dealokasi Memori Dinamis pada C++ |
Pada
kesempatan kali ini saya akan membahas tentang alokasi dan dealokasi memori
dinamis pada C++. Namun sebelum itu rasanya perlu kita untuk mengetahui bagian
(segment) memori yang digunakan pada program, khususnya C++. Bagian-bagian
memori tersebut diantanya :
- Text (code) : merupakan bagian dari memori dimana kode-kode program (basic instruction) disimpan. Buka file .exe dengan notepad maka akan terlihat simbol-simbol yang merupakan bahasa mesin yang tidak dapat kita baca. Isi dari file tersebutlah yang disimpan dalam segmen memori text (code).
- Stack : merupakan bagian memori yang digunakan untuk menyimpan variabel-varibel yang didefinisikan saat kompilasi program, jadi alamat memorinya sudah ditentukan dari awal. Stack memiliki sifat LIFO (Last In First Out), dalam hal ini artinya variabel yang disimpan terakhir akan diambil pertama.
- Heap : Nah, bagian inilah yang akan kita gunakan untuk melakukan alokasi memori dinamis. Heap merupakan bagian memori program yang tidak terpakai dan dapat digunakan untuk melakukan alokasi memori secara dinamis saat program sedang berjalan. Heap dapat digunakan selama tersedia tempat kosong untuk pengalokasian memori dinamis.
Setelah
mengetahui ketiga bagian/segment memori program sekarang saatnya masuk ke
pembahasan utama. Sebenarnya pengalokasian memori dinamis sudah sering kita
temui, terutama pada linked list dan tree. Kenapa menggunakan alokasi memori
dinamis? Kadangkala kita tidak mengetahui jumlah pasti banyaknya memori
yang kita butuhkan pada sebuah program. Dengan menggunakan memori dinamis kita
dapat mengalokasikan memori tambahan yang kita butuhkan ketika program sedang berjalan.
Pada
C++, untuk melakukan alokasi memori dinamis kita menggunakan keyword new, sedangkan untuk melakukan
dealokasi memori dinamis kita menggunakan keyword delete. Apakah perlu suatu memori yang dialokasikan untuk didealokasikan? Ya, karena data yang disimpan pada heap
tidak akan terhapus secara otomatis. Apabila dibiarkan tanpa proses dealokasi akan terjadi kesalahan memori yang disebut “memory
leaks”.
Bentuk
pengalokasian memori dinamis :
Yang diperlukan adalah variabel pointer
dan keyword “new”. Perhatikan contoh di bawah ini!
float *bil = new float;
pernyataan
di atas indentik dengan,
float *bil;
bil = new float;
*Untuk cara pemberian nilai
akan langsung dicontohkan pada program
Bentuk
pendealokasian memori dinamis :
Yang diperlukan adalah keyword “delete”
dan nama varibel pointer yang akan didealokasikan. Perhatikan contoh di
bawah ini yang digunakan untuk dealokasi memori bil.
delete bil;
Berikut
adalah contoh program sederhana alokasi dan dealokasi memori dinamis pada C++:
/*
Alokasi dan Dealokasi Memori
Dinamis pada C++
Microsoft Visual Studio
Express 2012
[RS]
*/
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
//alokasi memori dinamis
int *bil;
bil = new int;
*bil = 20; //bentuk pemberian nilai
//alokasi memori dinamis
double *phi;
phi = new double(3.14); //bentuk pemberian nilai lain, identik dengan bentuk
pemberian nilai sebelumnya
cout<<"ALOKASI DAN DEALOKASI MEMORI DINAMIS"<<endl;
cout<<"------------------------------------"<<endl;
//menampilkan nilai
cout<<"Nilai bil : "<<*bil<<endl;
cout<<"Niali phi : "<<*phi<<endl;
//dealokasi memori dinamis
delete bil;
delete phi;
_getche();
return 0;
}
Output
ALOKASI DAN DEALOKASI MEMORI DINAMIS
------------------------------------
Nilai bil : 20
Niali phi : 3.14
ALOKASI
DAN DEALOKASI MEMORI DINAMIS ARRAY
Bentuk
pengalokasian memori dinamis array :
//mengalokasikan
4 elemen array dinamis bertipe integer
int *nilai;
nilai = new int[4];
//contoh
lain, mengalokasikan 15 elemen array dinamis bertipe char
char *kata;
char = new char[15];
*Untuk cara pemberian nilai
akan langsung dicontohkan pada program
Bentuk
pendealokasikan memori dinamis array :
Untuk pendealokasian memori dinamis array
sedikit berbeda. Perlu ditambahkan simbol “[ ]” agar semua array dinamis dapat
didealokasikan, tanpa simbol tersebut maka array dinamis yang didealokasikan
adalah byte pertama saja.
delete [ ] nilai;
delete [ ] kata;
Berikut
adalah contoh program sederhana alokasi dan dealokasi memori dinamis ARRAY pada
C++:
/*
Alokasi dan Dealokasi Memori
Dinamis pada C++
Microsoft Visual Studio
Express 2012
[RS]
*/
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int jum;
cout<<"ALOKASI DAN DEALOKASI MEMORI DINAMIS ARRAY"<<endl;
cout<<"------------------------------------------"<<endl;
cout<<"Masukkan jumlah nilai : ";
cin>>jum;
cout<<endl;
//alokasi memori dinamis array
int *nilai;
nilai = new int[jum];
//input nilai
cout<<"Masukkan NILAI"<<endl;
for (int i = 0; i < jum; i++)
{
cout<<"Nilai "<<i+1<<" : ";
cin>>*(nilai+i);
}
cout<<endl;
//menampilkan nilai
cout<<"Menampilkan NILAI"<<endl;
for (int j = 0; j < jum; j++)
{
cout<<"Nilai "<<j+1<<" = "<<*(nilai+j)<<endl;
}
//dealokasi memori dinamis array
delete [] nilai;
_getche();
return 0;
}
Output
ALOKASI DAN DEALOKASI MEMORI DINAMIS ARRAY
------------------------------------------
Masukkan jumlah nilai : 5
Masukkan NILAI
Nilai 1 : 90
Nilai 2 : 85
Nilai 3 : 85
Nilai 4 : 100
Nilai 5 : 95
Menampilkan NILAI
Nilai 1 = 90
Nilai 2 = 85
Nilai 3 = 85
Nilai 4 = 100
Nilai 5 = 95
[RS]
Klik Like & Share jika postingan ini bermanfaat
Apa tanggapan Anda?
Berikan tanggapan Anda melalui kolom komentar yang telah disediakan.
- Gunakan bahasa yang sopan;
- Saat menjadikan postingan pada blog ini sebagai referensi, jangan lupa mencantumkan sumbernya (link dari blog ini).
Jika blog ini bermanfaat jangan lupa memberikan 'like' atau 'share' untuk mendapatkan update terbaru.
Terima kasih