0Pricing
C++ Academy · Pelajaran

Alokasi Stack

Cara kerja penyimpanan otomatis

Alokasi Stack adalah pelajaran C++ 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 C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

Penyimpanan Otomatis

Variabel lokal berada dalam penyimpanan otomatis, yang umumnya disebut tumpukan. Variabel tersebut dibuat saat eksekusi memasuki cakupannya dan dihancurkan saat eksekusi meninggalkannya.

#include <iostream>

int main() {
    int x = 42;          // on the stack
    double pi = 3.14;    // on the stack
    std::cout << x << " " << pi << "\n";
}

Tumpukan Membesar dan Mengecil

Setiap pemanggilan fungsi mendorong bingkai tumpukan yang menyimpan variabel lokalnya. Saat fungsi mengembalikan nilai, bingkai tersebut dikeluarkan dan variabel lokal menghilang — tidak diperlukan pembersihan manual.

#include <iostream>

void greet() {
    int local = 7;          // pushed on call
    std::cout << local << "\n";
}                            // popped on return

int main() { greet(); }

Urutan LIFO

Tumpukan bersifat Last In, First Out. Variabel lokal yang paling baru dibuat akan menjadi yang pertama dihancurkan saat cakupan berakhir.

#include <iostream>

int main() {
    int a = 1;
    {
        int b = 2;   // created after a
        std::cout << b << "\n";
    }                // b destroyed first
    std::cout << a << "\n";
}

Cepat dan Murah

Alokasi pada tumpukan sangat cepat: prosesnya hanya memindahkan penunjuk tumpukan. Tidak ada pencarian memori bebas dan tidak ada pencatatan administrasi seperti yang diperlukan oleh heap.

Cakupan Menentukan Masa Hidup

Objek tumpukan hanya hidup di dalam blok tempat objek tersebut dideklarasikan. Blok bertingkat memiliki cakupannya sendiri.

#include <iostream>

int main() {
    for (int i = 0; i < 3; ++i) {
        int square = i * i;   // recreated each iteration
        std::cout << square << "\n";
    }
}

Ukuran Terbatas

Tumpukan memiliki ukuran tetap dan terbatas (sering kali beberapa megabita). Mengalokasikan larik besar di tumpukan dapat menyebabkan kerusakan akibat luapan tumpukan.

// Risky: a large fixed array on the stack
int big[1000000];   // may overflow the stack

Mengembalikan Alamat Tumpukan adalah Kutu

Jangan pernah mengembalikan penunjuk atau referensi ke variabel lokal. Setelah fungsi mengembalikan nilai, penyimpanan tersebut sudah tidak ada dan penunjuknya menjadi menggantung.

int* bad() {
    int local = 5;
    return &local;   // BUG: local dies here
}

Meneruskan Objek Besar dengan Referensi

Menyalin objek besar ke tumpukan memboroskan sumber daya. Teruskan objek tersebut dengan const& untuk menghindari penyalinan sekaligus menjaga penggunaan tumpukan tetap kecil.

#include <string>

void print(const std::string& s) {  // no copy
    // use s
}

Objek Tumpukan Tidak Memerlukan delete

Karena kompiler mengelola masa hidupnya secara otomatis, Anda harus tidak pernah memanggil delete pada variabel tumpukan.

#include <iostream>

int main() {
    int n = 10;
    // delete &n;   // ERROR: not heap-allocated
    std::cout << n << "\n";
}

Larik pada Tumpukan

Larik berukuran tetap dengan panjang yang diketahui berada di tumpukan dan dibebaskan secara otomatis saat lingkup berakhir.

#include <iostream>

int main() {
    int values[3] = {10, 20, 30};
    for (int v : values) std::cout << v << "\n";
}

Kapan Memilih Tumpukan

Pilih tumpukan untuk objek kecil dan berumur singkat yang ukurannya diketahui saat kompilasi. Tumpukan lebih cepat dan membersihkan dirinya sendiri—gunakan memori dinamis hanya jika benar-benar diperlukan.

Pemeriksaan Singkat

Uji pemahaman Anda tentang alokasi tumpukan.

Rangkuman

Anda telah mempelajari bahwa alokasi tumpukan menggunakan penyimpanan otomatis yang terikat pada lingkup: variabel dibuat saat masuk dan dihancurkan saat keluar dalam urutan LIFO. Alokasi ini cepat, membersihkan dirinya sendiri, dan ukurannya terbatas. Jangan pernah mengembalikan alamat variabel lokal dan jangan pernah menggunakan delete pada objek tumpukan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Alokasi Stack” gratis?

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

Apa yang akan aku pelajari di “Alokasi Stack”?

Cara kerja penyimpanan otomatis Kamu berlatih C++ 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 C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ 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 “Alokasi Stack” 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 C++ Academy ini?

Ya. Setiap pelajaran C++ 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. Alokasi Stack
  2. Alokasi Heap dengan new/delete
  3. Masa Hidup Objek
  4. Bug Memori yang Umum
← Kembali ke C++ Academy