Menu
CoddyTech

Membebaskan Memori dengan free()

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

Saat kamu mengalokasikan memori secara dinamis menggunakan malloc(), memori tersebut tetap dialokasikan sampai kamu melepaskannya secara eksplisit. Fungsi free() adalah alat yang kamu gunakan untuk mengembalikan memori yang dialokasikan secara dinamis ke sistem setelah selesai menggunakannya.

Fungsi free() menerima satu argumen: pointer ke blok memori yang ingin kamu bebaskan. Pointer ini harus sama dengan pointer yang dikembalikan oleh malloc() (atau fungsi terkait seperti calloc()).

#include <stdlib.h>

int *ptr = (int*)malloc(sizeof(int));  // Alokasikan memori
*ptr = 42;  // Gunakan memori tersebut
free(ptr);  // Bebaskan memori setelah selesai

Tidak memanggil free() menyebabkan apa yang dikenal sebagai kebocoran memori. Memori yang dialokasikan tetap dicadangkan oleh programmu meskipun kamu sudah tidak menggunakannya. Dalam program yang berjalan lama atau program yang berulang kali mengalokasikan memori, kebocoran ini dapat menghabiskan seluruh memori sistem yang tersedia dan menyebabkan masalah kinerja atau program mogok.

Ingat: setiap malloc() harus memiliki free() yang sesuai. Pasangan ini penting untuk pengelolaan memori yang bertanggung jawab dalam pemrograman C.

challenge icon

Tantangan

Mudah

Tulis program C yang menunjukkan seluruh siklus alokasi dan pembebasan memori dinamis. Programmu harus:

  1. Membaca bilangan bulat count dari pengguna yang menunjukkan banyaknya bilangan bulat yang akan disimpan
  2. Menggunakan malloc() dengan sizeof() untuk mengalokasikan memori secara dinamis bagi array yang terdiri dari count bilangan bulat
  3. Memeriksa apakah alokasi memori berhasil. Jika gagal, cetak Memory allocation failed! dan hentikan program
  4. Jika alokasi berhasil, cetak Memory allocated successfully!
  5. Membaca count nilai bilangan bulat dari pengguna dan menyimpannya dalam array yang dialokasikan
  6. Menghitung dan mencetak jumlah semua nilai dengan format: Sum: [value]
  7. Mencari dan mencetak nilai maksimum dengan format: Maximum: [value]
  8. Menggunakan free() untuk membebaskan memori
  9. Mencetak Memory freed successfully! untuk memastikan pembersihan selesai

Ingat untuk menyertakan header <stdlib.h> agar dapat menggunakan malloc() dan free(). Tantangan ini menunjukkan penggunaan berpasangan malloc() dan free() yang penting untuk mencegah kebocoran memori dalam programmu.

Misalnya, jika inputnya adalah:

4
15 8 23 12

Outputmu seharusnya:

Memory allocated successfully!
Sum: 58
Maximum: 23
Memory freed successfully!

Tantangan ini memperkuat konsep penting bahwa setiap blok memori yang dialokasikan secara dinamis harus dibebaskan dengan benar saat tidak lagi diperlukan, sehingga siklus pengelolaan memori yang bertanggung jawab dalam pemrograman C selesai.

Coba sendiri

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

int main() {
    int count;
    
    // Baca jumlah bilangan bulat yang akan disimpan
    scanf("%d", &count);
    
    // TODO: Tulis kodemu di bawah ini
    // 1. Alokasikan memori menggunakan malloc() dengan sizeof()
    // 2. Periksa apakah alokasi berhasil
    // 3. Baca nilai bilangan bulat dan simpan
    // 4. Hitung jumlah dan cari nilai maksimum
    // 5. Bebaskan memori yang dialokasikan
    
    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