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.

# Stack dan Heap

Kenali dua wilayah memori utama program C++: stack yang otomatis dan cepat, heap yang fleksibel tetapi harus dikelola sendiri.

Buka →
# Automatic dan Dynamic Storage

Storage duration menentukan berapa lama objek hidup: automatic mengikuti blok kode, dynamic bertahan sampai dilepas manual, static sepanjang program.

Buka →
# new dan delete

Alokasi memori dinamis di heap dengan operator new, pelepasannya dengan delete, aturan pasangan wajib, dan bahaya double delete.

Buka →
# new[] dan delete[] untuk Array

Alokasi array dinamis dengan new T[n], pelepasan wajib dengan delete[], serta alternatif modern unique_ptr<T[]> dan std::vector.

Buka →
# Memory Leak dan Deteksinya

Kebocoran memori: definisi, penyebab umum, deteksi dengan AddressSanitizer dan valgrind, serta pencegahannya dengan RAII.

Buka →
# Resource Management

Resource bukan hanya memori: pola acquire-use-release, masalah pelepasan manual, dan prinsip siapa mengalokasikan yang melepas.

Buka →
# RAII

Idiom RAII: mengikat umur resource ke umur objek sehingga pelepasan berjalan otomatis di semua jalur eksekusi, termasuk exception.

Buka →
# std::unique_ptr

Smart pointer kepemilikan tunggal: make_unique, operator*, ->, get(), reset(), sifat tidak-bisa-disalin, dan zero overhead-nya.

Buka →
# std::shared_ptr

Kepemilikan bersama dengan reference counting: make_shared, use_count(), biaya blok kontrol, dan kapan shared_ptr tepat dipakai.

Buka →
# std::weak_ptr

Observer tanpa kepemilikan: weak_ptr memecah circular reference shared_ptr, dengan akses aman lewat lock() dan expired().

Buka →
# Ownership dan Pemilihan Smart Pointer

Meringkas semantik kepemilikan: unique untuk eksklusif, shared untuk bersama, weak sebagai observer, raw pointer hanya mengamati — plus konvensi passing antar fungsi.

Buka →
# Pengantar Move Semantics

Move = memindahkan kepemilikan resource tanpa menyalinnya: std::move pada unique_ptr, mengapa move penting, dan keadaan moved-from.

Buka →
# Exception-Safe Resource Management

Exception melompati baris delete dan menciptakan kebocoran; RAII menjadikan pelepasan resource otomatis di jalur exception mana pun.

Buka →
# Menghindari Manual Memory Management

Rangkuman 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 →