Menu
CoddyTech

Membebaskan Memori dengan 'delete'

Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 7 dari 56.

Saat kamu mengalokasikan memori secara dinamis menggunakan new, memori itu tidak otomatis hilang setelah selesai kamu gunakan. Tidak seperti variabel biasa yang dibersihkan secara otomatis, memori yang dialokasikan secara dinamis tetap digunakan sampai kamu membebaskannya secara eksplisit. Di sinilah kata kunci delete menjadi penting.

Kata kunci delete membebaskan memori yang sebelumnya dialokasikan dengan new. Saat kamu menggunakan delete, kamu memberi tahu sistem bahwa kamu sudah selesai menggunakan memori tersebut dan memori itu dapat digunakan kembali untuk keperluan lain:

int* ptr = new int(42);  // Alokasikan memori
// Gunakan memori tersebut...
delete ptr;              // Bebaskan memori

Aturan dasar pengelolaan memori dinamis sederhana: setiap new harus memiliki delete yang sesuai. Jika kamu lupa menghapus memori yang dialokasikan secara dinamis, kamu akan menyebabkan kebocoran memori, yaitu programmu terus menahan memori yang tidak lagi digunakan, yang pada akhirnya dapat menyebabkan sistemmu kehabisan memori yang tersedia.

Setelah memanggil delete pada sebuah pointer, pointer tersebut menjadi tidak valid dan tidak boleh digunakan lagi. Sebaiknya atur pointer ke nullptr setelah menghapusnya agar kamu tidak menggunakannya secara tidak sengaja.

challenge icon

Tantangan

Mudah

Buat program yang menunjukkan seluruh siklus hidup memori dinamis dengan mengalokasikan memori menggunakan new, menggunakannya, lalu membatalkan alokasinya dengan benar menggunakan delete.

Input berikut akan diberikan:

  • Nilai bilangan bulat untuk disimpan di memori yang dialokasikan secara dinamis
  • Nilai bilangan bulat kedua untuk memperbarui nilai yang disimpan

Programmu harus:

  1. Menggunakan new untuk mengalokasikan memori secara dinamis bagi sebuah bilangan bulat dan menyimpan pointer-nya dalam variabel bernama dynamicPtr
  2. Menetapkan nilai input pertama ke memori yang dialokasikan secara dinamis menggunakan operator dereferensi
  3. Mencetak nilai awal yang disimpan di memori yang dialokasikan secara dinamis
  4. Memperbarui nilai di memori yang dialokasikan secara dinamis menjadi nilai input kedua
  5. Mencetak nilai yang telah diperbarui
  6. Menggunakan delete untuk membebaskan memori yang dialokasikan secara dinamis
  7. Mengatur pointer menjadi nullptr setelah penghapusan
  8. Mencetak pesan konfirmasi bahwa memori telah dibebaskan

Gunakan format output persis seperti berikut:

Initial value: [first value]
Updated value: [second value]
Memory freed successfully

Coba sendiri

#include <iostream>
using namespace std;

int main() {
    // Baca nilai input
    int firstValue, secondValue;
    cin >> firstValue;
    cin >> secondValue;
    
    // TODO: Tulis kodemu di bawah ini
    // 1. Alokasikan memori menggunakan new dan simpan alamatnya di dynamicPtr
    // 2. Masukkan firstValue ke memori yang dialokasikan
    // 3. Cetak nilai awal
    // 4. Perbarui nilainya dengan secondValue
    // 5. Cetak nilai yang sudah diperbarui
    // 6. Hapus memori dan atur pointer ke nullptr
    // 7. Cetak pesan konfirmasi
    
    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