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 stackMengembalikan 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.