C++ memberi kita kendali penuh atas memori, dan kendali itu menuntut tanggung jawab. Kita membedakan stack dan heap, memahami new dan delete, lalu menerapkan RAII dan smart pointer agar kebocoran memori dapat dicegah sejak awal.
Kenali dua wilayah memori utama program C++: stack yang otomatis dan cepat, heap yang fleksibel tetapi harus dikelola sendiri.
Buka → # Automatic dan Dynamic StorageStorage duration menentukan berapa lama objek hidup: automatic mengikuti blok kode, dynamic bertahan sampai dilepas manual, static sepanjang program.
Buka → # new dan deleteAlokasi memori dinamis di heap dengan operator new, pelepasannya dengan delete, aturan pasangan wajib, dan bahaya double delete.
Buka → # new[] dan delete[] untuk ArrayAlokasi array dinamis dengan new T[n], pelepasan wajib dengan delete[], serta alternatif modern unique_ptr<T[]> dan std::vector.
Buka → # Memory Leak dan DeteksinyaKebocoran memori: definisi, penyebab umum, deteksi dengan AddressSanitizer dan valgrind, serta pencegahannya dengan RAII.
Buka → # Resource ManagementResource bukan hanya memori: pola acquire-use-release, masalah pelepasan manual, dan prinsip siapa mengalokasikan yang melepas.
Buka → # RAIIIdiom RAII: mengikat umur resource ke umur objek sehingga pelepasan berjalan otomatis di semua jalur eksekusi, termasuk exception.
Buka → # std::unique_ptrSmart pointer kepemilikan tunggal: make_unique, operator*, ->, get(), reset(), sifat tidak-bisa-disalin, dan zero overhead-nya.
Buka → # std::shared_ptrKepemilikan bersama dengan reference counting: make_shared, use_count(), biaya blok kontrol, dan kapan shared_ptr tepat dipakai.
Buka → # std::weak_ptrObserver tanpa kepemilikan: weak_ptr memecah circular reference shared_ptr, dengan akses aman lewat lock() dan expired().
Buka → # Ownership dan Pemilihan Smart PointerMeringkas semantik kepemilikan: unique untuk eksklusif, shared untuk bersama, weak sebagai observer, raw pointer hanya mengamati — plus konvensi passing antar fungsi.
Buka → # Pengantar Move SemanticsMove = memindahkan kepemilikan resource tanpa menyalinnya: std::move pada unique_ptr, mengapa move penting, dan keadaan moved-from.
Buka → # Exception-Safe Resource ManagementException melompati baris delete dan menciptakan kebocoran; RAII menjadikan pelepasan resource otomatis di jalur exception mana pun.
Buka → # Menghindari Manual Memory ManagementRangkuman Section: aturan kode modern C++ — container dulu, unique_ptr sebagai default, shared_ptr hanya saat benar-benar dibagi, tanpa naked new/delete di kode aplikasi.
Buka →