0Pricing
Swift Academy · Pelajaran

Stack vs Heap: Tempat Nilai Disimpan

Memahami cara struct disimpan di stack dan class di heap, serta dampaknya terhadap kinerja.

Stack vs Heap: Tempat Nilai Disimpan adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Selamat Datang

Memahami di mana nilai Swift berada di memori—di tumpukan atau memori dinamis—sangat penting untuk menulis kode yang berperforma baik dan dapat diprediksi.

Tumpukan

Tumpukan adalah blok memori berurutan yang dikelola secara otomatis: • Variabel lokal dan parameter fungsi berada di sini • Alokasi berkompleksitas O(1)—cukup memindahkan penunjuk • Dibebaskan secara otomatis saat cakupan berakhir • Lokal-utas—setiap utas memiliki tumpukannya sendiri

Memori Dinamis

Memori dinamis adalah kumpulan bersama untuk alokasi yang berumur panjang: • Objek berada di sini ketika masa hidupnya melampaui satu cakupan • Alokasi memerlukan pencarian memori kosong—lebih mahal • Dikelola oleh ARC untuk kelas • Digunakan bersama oleh utas—memerlukan sinkronisasi

Struct Disimpan di Tumpukan

```swift func compute() { var pt = CGPoint(x: 3, y: 4) // on the stack pt.x += 1 } // pt freed automatically ``` Struct kecil diteruskan melalui penyalinan—tanpa overhead memori dinamis.

Kelas Disimpan di Memori Dinamis

```swift class Dog { var name: String init(name: String) { self.name = name } } var d = Dog(name: "Rex") // Dog instance on heap // 'd' is a pointer on the stack ```

Struct Besar Mungkin Menggunakan Memori Dinamis

Struct besar (array, string, tipe nilai besar) menggunakan COW dan penyimpanan memori dinamis secara internal meskipun berperilaku sebagai tipe nilai: ```swift var arr = [Int](repeating: 0, count: 10_000) // The array's buffer is on the heap; 'arr' itself is a stack value ```

Penangkapan dalam Closure

Ketika closure menangkap variabel bertipe nilai yang harus hidup melampaui cakupan, Swift membungkusnya di memori dinamis: ```swift var count = 0 let increment = { count += 1 } // count captured in a heap box increment() print(count) // 1 ```

Pembungkusan Eksistensial Protokol

Menyimpan tipe nilai kecil dalam variabel `any Protocol` dapat menyebabkan alokasi memori dinamis (pembungkusan eksistensial): ```swift var shape: any Shape = Circle(radius: 5) // may allocate on heap ``` Tipe kecil (≤3 kata) disisipkan langsung; tipe yang lebih besar dibungkus.

Mengukur Alokasi

Gunakan templat Allocations dari Instruments untuk melihat alokasi memori dinamis: 1. Profil > Alokasi 2. Filter berdasarkan kelas atau kategori 3. Lacak jumlah `alloc` dan `dealloc` Jumlah `alloc` yang tinggi dalam perulangan sering menunjukkan pembungkusan yang tidak terduga.

Implikasi Desain

• Utamakan struct untuk tipe penampung data yang berumur pendek—kecepatan tumpukan • Gunakan kelas ketika identitas atau keadaan bersama diperlukan • Hindari alokasi dalam perulangan rapat—alokasikan terlebih dahulu dengan `reserveCapacity` • Lakukan profiling sebelum mengoptimalkan—optimasi prematur membuang waktu

Pemeriksaan Singkat

Jenis memori apa yang dibebaskan secara otomatis ketika cakupan fungsi berakhir?

Rangkuman

Hal-hal penting: • Tumpukan: murah, otomatis, lokal-utas, tipe nilai • Memori dinamis: fleksibel, dikelola ARC, tipe referensi • Struct besar menggunakan penyangga internal di memori dinamis (COW) • Closure yang menangkap variabel membungkusnya di memori dinamis • Gunakan Allocations dari Instruments untuk mendeteksi penggunaan memori dinamis yang tidak terduga Berikutnya: mutasi, berbagi, dan pembuatan alias yang tidak terduga.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Stack vs Heap: Tempat Nilai Disimpan” gratis?

Ya — teks lengkap “Stack vs Heap: Tempat Nilai Disimpan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Stack vs Heap: Tempat Nilai Disimpan”?

Memahami cara struct disimpan di stack dan class di heap, serta dampaknya terhadap kinerja. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Stack vs Heap: Tempat Nilai Disimpan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Stack vs Heap: Tempat Nilai Disimpan
  2. Mutasi, Berbagi, dan Aliasing Tak Terduga
  3. Graf Nilai/Referensi Campuran
  4. Merancang API untuk Semantik Nilai
← Kembali ke Swift Academy