Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Alokasi pada bingkai dinamakan dari "bingkai tumpukan" yang dibentuk setiap kali suatu fungsi dipanggil. Bingkai tumpukan adalah area memori yang digunakan sementara untuk menyimpan argumen ke fungsi serta variabel apa pun yang didefinisikan secara lokal ke fungsi. Variabel bingkai sering disebut variabel "otomatis" karena pengkompilasi secara otomatis mengalokasikan ruang untuk variabel tersebut.
Ada dua karakteristik utama alokasi bingkai. Pertama, ketika Anda menentukan variabel lokal, ruang yang cukup dialokasikan pada bingkai tumpukan untuk menahan seluruh variabel, bahkan jika itu adalah array atau struktur data yang besar. Kedua, variabel bingkai secara otomatis dihapus ketika mereka keluar dari cakupan:
void MyFunction()
{
// Local object created on the stack
CString strName;
// Object goes out of scope and is deleted as function ends
}
Untuk variabel fungsi lokal, transisi cakupan ini terjadi ketika fungsi keluar, tetapi cakupan variabel bingkai bisa lebih kecil dari fungsi jika kurung kurawal berlapis digunakan. Penghapusan otomatis variabel bingkai ini sangat penting. Dalam kasus jenis primitif sederhana (seperti int atau byte), array, atau struktur data, penghapusan otomatis hanya mengklaim kembali memori yang digunakan oleh variabel. Karena variabel telah keluar dari cakupan, variabel tidak dapat diakses. Namun, dalam kasus objek C++, proses penghapusan otomatis sedikit lebih rumit.
Ketika objek didefinisikan sebagai variabel bingkai, konstruktornya secara otomatis dipanggil pada titik di mana definisi ditemui. Ketika objek keluar dari cakupan, destruktornya secara otomatis dipanggil sebelum memori untuk objek diklaim kembali. Konstruksi dan penghancuran otomatis ini bisa sangat berguna, tetapi Anda harus menyadari panggilan otomatis, terutama kepada destruktor.
Keuntungan utama dari mengalokasikan objek pada bingkai adalah objek dihapus secara otomatis. Saat mengalokasikan objek pada bingkai, Anda tidak perlu khawatir tentang objek yang terlupakan yang menyebabkan kebocoran memori. (Untuk detail tentang kebocoran memori, lihat artikel Mendeteksi Kebocoran Memori di MFC.) Kerugian dari alokasi bingkai adalah variabel bingkai tidak dapat digunakan di luar cakupannya. Faktor lain dalam memilih alokasi bingkai versus alokasi kubah adalah bahwa untuk struktur dan objek besar, seringkali lebih baik menggunakan kubah alih-alih tumpukan untuk penyimpanan karena ruang tumpukan sering dibatasi.