-->

I'M Bayu Pradika

Graphic Designer . Web Developer . Programmer

Minggu, 21 Agustus 2022

Algoritma Dan Struktur Data C++ BAB IV (Alokasi Memori)

  



Alokasi Memori

printf("Hallo Para Programmer!!"); 

printf("Disini Saya Akan Menjelaskan Sedikit Dasar Mengenai Alokasi Memori Dalam Bahasa C/C++"); 

printf("Terus Ikuti Blog Ini Untuk Mendapatkan Artikel Bermanfaat Selanjutnya yah");

printf("Selamat Belajar!!");

A. Mengapa Menggunakan Alokasi Memory

Ketika kita mempelajari tipe data array, nampak kelemahan tipe data ini adalah sifatnya yang statis. Artinya ketika kita mendeklarasikan sebuah variabel dengan tipe data array maka data yang kita deklarasikan disimpan pada memori harus dalam kondisi terurut. Selain itu selama program berjalan ukuran dari array bersifat tetap atau kita tidak dapat merubahnya.

Adakalanya dalam pemrograman ukuran sebuah obyek belum dapat kita tentukan sampai program kita jalankan. Alokasi memori menyediakan fasilitas untuk membuat ukuran buffer dan array secara dinamik. Dinamik artinya bahwa ruang dalam memori akan dialokasikan ketika program dieksekusi (run time). Fasilitas ini memungkinkan user untuk membuat tipe data dan struktur dengan ukuran dan panjang berapapun yang disesuaikan dengan kebutuhan di dalam program.

1.     Perintah sizeof()

Sebelum kita menggunakan alokasi memori, kita harus mengenal perintah sizeof. Perintah ini digunakan untuk:

• Untuk mendapatkan ukuran dari berbagai tipe data, variabel ataupun struktur.

• Return value : ukuran dari obyek yang bersangkutan dalam byte.

• Parameter dari sizeof() : sebuah obyek atau sebuah tipe data

Pada Gambar 4.1 ditunjukkan contoh penggunaan perintah sizeof() dan hasil outputnya pada Gambar 4.2.





2.     Perintah malloc()

Fungsi standar dalam C yang digunakan untuk mengalokasikan memori adalah malloc(). Prototype dari fungsi ini adalah sebagai berikut: void *malloc(int jml_byte) Banyaknya byte yang akan dipesan dinyatakan sebagai parameter fungsi. Return value dari fungsi ini adalah sebuah pointer yang tak bertipe (pointer to void) yang menunjuk ke buffer yang dialokasikan. Pointer tersebut haruslah dikonversi kepada tipe yang sesuai (dengan menggunakan type cast) agar bisa mengakses data yang disimpan dalam buffer. Jika proses alokasi gagal dilakukan, fungsi ini akan memberikan return value berupa sebuah pointer NULL.

Sebelum dilakukan proses lebih lanjut, perlu terlebih dahulu dipastikan keberhasilan proses pemesanan memori, seperti ditunjukkan pada Gambar 4.3.

                    Dengan perintah seperti di bawah ini terjadi pengalokasian memori seperti yang digambarkan pada Gambar 4.4.int *x; x = (int *) malloc(3 * sizeof(int));

B. Membebaskan Kembali Memori dengan Fungsi free()
    Jika bekerja dengan menggunakan memori yang dialokasikan secara dinamis, maka seorang programmer haruslah membebaskan kembali memori yang telah selesai digunakan untuk dikembalikankepada sistem. Setelah suatu ruang memori dibebaskan, ruang tersebut bisa dipakai lagi untuk alokasivariabel dinamis lainnya. Untuk itu digunakan fungsi free() dengan prototype sebagai berikut :
    void free(void *pblok);

    Dengan pblok adalah pointer yang menunjuk ke memori yang akan dibebaskan. Pada Gambar 4.5 ditunjukkan listing program untuk membebaskan memori tersebut.


C. Mengalokasikan Ulang Memori dengan Fungsi realloc()
     Bisa jadi terjadi ketika hendak mengalokasikan memori, user tidak yakin berapa besar lokasi yang dibutuhkannya. Misalnya user tersebut memesan 500 lokasi, ternyata setelah proses pemasukan data kebutuhannya melebihi 500 lokasi menjadi 600. Maka user tersebut dapat mengalokasikan ulang memori yang dipesannya dengan menggunakan fungsi realloc(). Fungsi ini akan mengalokasikan kembali pointer yang sebelumnya telah diatur untuk menunjuk sejumlah lokasi, memberinya ukuran yang baru (bisa jadi lebih kecil atau lebih besar). 
     Sebagai contoh, adalah pblok adalah pointer yang menunjuk kepada 500 lokasi char, maka user bisa mengalokasikan ulang agar pointer pblok menunjuk kepada 600 lokasi char yang ditunjukkan pada Gambar 4.6.



Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna Veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

0 comments:

Categories

Contact Us

BAYU
+62 896-2690-9619
Kampar, Riau, Indonesia