Menu
CoddyTech

Alokasi Dinamis dengan malloc()

Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 32 dari 63.

Sekarang kamu akan belajar tentang malloc(), fungsi utama untuk meminta memori dari heap saat program berjalan. Fungsi malloc() merupakan singkatan dari "memory allocation" dan memungkinkan kamu mengalokasikan memori secara dinamis saat kamu membutuhkannya, alih-alih mendeklarasikan variabel berukuran tetap saat compile.

Fungsi malloc() menerima satu argumen: jumlah byte yang ingin kamu alokasikan. Fungsi ini mengembalikan pointer void ke blok memori yang dialokasikan, atau NULL jika alokasi gagal. Karena fungsi ini mengembalikan pointer void, kamu dapat menetapkannya langsung ke pointer bertipe, casting bersifat opsional dalam C (tidak seperti C++, yang mengharuskannya).

#include <stdlib.h>

int *ptr = (int*)malloc(sizeof(int));  // Alokasikan memori untuk satu bilangan bulat
// ptr sekarang menunjuk ke lokasi memori yang dapat menyimpan satu bilangan bulat

Keunggulan utama malloc() adalah fleksibilitas, kamu bisa meminta jumlah memori yang tepat sesuai kebutuhan saat program berjalan, dan memori ini tetap tersedia sampai kamu membebaskannya secara eksplisit. Ini sangat berguna ketika kamu belum tahu berapa banyak memori yang akan dibutuhkan sampai programmu berjalan.

Ingat untuk menyertakan <stdlib.h> agar bisa menggunakan malloc(). Di C, melakukan cast pada pointer void yang dikembalikan bersifat opsional karena pointer tersebut otomatis dikonversi ke tipe yang kamu tetapkan.

challenge icon

Tantangan

Mudah

Tulis program C yang menunjukkan alokasi memori dinamis menggunakan malloc() untuk membuat dan menggunakan satu integer di heap. Programmu harus:

  1. Menggunakan malloc() untuk mengalokasikan memori secara dinamis bagi satu integer
  2. Mengubah pointer void yang dikembalikan menjadi pointer integer
  3. Membaca nilai integer dari input pengguna
  4. Menyimpan nilai input di memori yang dialokasikan secara dinamis menggunakan operator dereferensi
  5. Mencetak nilai yang disimpan dalam format: Stored value: [value]
  6. Menghitung dan menyimpan kuadrat nilai di lokasi memori yang sama
  7. Mencetak nilai kuadrat dalam format: Squared value: [value]

Ingat untuk menyertakan header <stdlib.h> agar bisa menggunakan malloc(). Programmu harus menunjukkan alur kerja dasar alokasi memori dinamis: meminta memori dari heap, menggunakannya untuk menyimpan dan memanipulasi data, serta menggunakan memori yang dialokasikan melalui operasi pointer.

Sebagai contoh, jika pengguna memasukkan 7, outputmu seharusnya:

Stored value: 7
Squared value: 49

Tantangan ini memperkenalkan konsep dasar alokasi memori dinamis, yaitu memori diminta saat program berjalan, bukan ditetapkan saat compile. Hal ini memberi programmu fleksibilitas yang lebih besar dalam penggunaan memori.

Coba sendiri

#include <stdio.h>
#include <stdlib.h>

int main() {
    // Baca input
    int input_value;
    scanf("%d", &input_value);
    
    // TODO: Tulis kodemu di bawah ini
    // 1. Gunakan malloc() untuk mengalokasikan memori bagi satu bilangan bulat
    // 2. Ubah tipe pointer yang dikembalikan menjadi int*
    // 3. Simpan nilai input di memori yang dialokasikan
    // 4. Cetak nilai yang disimpan
    // 5. Hitung dan simpan kuadratnya di lokasi yang sama
    // 6. Cetak nilai kuadratnya
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online