Anda di halaman 1dari 7

Alokasi memori dinamis

A closer look at malloc


Let's look at that malloc statement again:
sieve= (int *)malloc(n*sizeof(int));

This is a CAST sizeof(int) returns how we want (remember them) much memory a int n int that forces the variable takes to the right type (not needed) This says in effect "grab me enough memory for 'n' int"

Mengapa harus dilakukan alokasi memori dinamis?


Contoh kasus: Buatlah suatu vektor yang berisi n buah bilangan! syarat : - n dan bilangan elemen vektor dimasukkan dari keyboard pada saat program berjalan - tampilkan vektor setelah n buah bilangan dimasukkan semua

Solusi menggunakan array


Array alokasi memori statis
int vektor[10];//mengalokasikan sebanyak 10 bilangan int i,n; main( ) { cout<<masukkan n!; cin>>n; //membaca n dari keyboard cout<<masukkan bilangan!<<endl; for(i=0;i<n;i++) { cin>>vektor[i]; //membaca bilangan } cout<<menampilkan vektor :<<endl; for(i=0;i<n;i++) { cout<<vektor[i]; //menampilkan bilangan } }

Konsekuensi alokasi memori statis


Banyaknya bilangan yang dapat diakses(banyaknya elemen vektor) maksimal hanya 10 buah (sesuai deklarasi arraynya) Untuk mengubah ukuran array tidak bisa dilakukan pada saat program berjalan (runtime) tetapi harus lewat source code-nya Misalnya ukuran array akan diubah menjadi 15, maka deklarasi array pada source code harus diubah menjadi: int vektor[15];

Solusi menggunakan pointer dan malloc


Alokasi memori dinamis
int *vektor;//deklarasi pointer untuk memori penyimpan vektor int *catatan; int i,n; main( ) { cout<<masukkan n!; cin>>n; //membaca n dari keyboard vektor = (int *)malloc(n*sizeof(int));//alokasi memori catatan=vektor; cout<<masukkan bilangan!<<endl; for(i=0;i<n;i++) { cin>>*vektor; //membaca bilangan vektor++; } cout<<menampilkan vektor :<<endl; vektor=catatan; for(i=0;i<n;i++) { cout<<*vektor; //menampilkan bilangan vektor++; } }

Manfaat menggunakan alokasi memori dinamis


Ukuran vektor (banyaknya bilangan) bisa menjadi tak terbatas (secara teoritis), tetapi dalam praktek dibatasi oleh ukuran memori hardware Ukuran vektor bisa ditentukan pada saat program berjalan, tidak perlu mengubah source code

Anda mungkin juga menyukai