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.
"Masa pakai" adalah periode selama eksekusi program ketika variabel atau fungsi tersedia. Durasi penyimpanan pengidentifikasi menentukan masa pakainya.
Pengidentifikasi yang dideklarasikan dengan storage-class-specifier static
memiliki durasi penyimpanan statis. Pengidentifikasi dengan durasi penyimpanan statis (juga disebut "global") memiliki penyimpanan dan nilai yang ditentukan selama durasi program. Penyimpanan dicadangkan dan nilai tersimpan pengidentifikasi hanya diinisialisasi sekali, sebelum memulai program. Pengidentifikasi yang dideklarasikan dengan hubungan eksternal atau internal juga memiliki durasi penyimpanan statis (lihat Hubungan).
Pengidentifikasi yang dinyatakan tanpa penentu kelas penyimpanan static
memiliki durasi penyimpanan otomatis jika dideklarasikan di dalam fungsi. Pengidentifikasi dengan durasi penyimpanan otomatis ("pengidentifikasi lokal") memiliki penyimpanan dan nilai yang ditentukan hanya dalam blok tempat pengidentifikasi ditentukan atau dideklarasikan. Pengidentifikasi otomatis dialokasikan penyimpanan yang baru setiap kali program memasuki blok tersebut, dan kehilangan penyimpanannya (dan nilainya) ketika program keluar dari blok. Pengidentifikasi yang dinyatakan dalam fungsi tanpa hubungan juga memiliki durasi penyimpanan otomatis.
Aturan berikut menentukan apakah pengidentifikasi memiliki masa pakai global (statis) atau lokal (otomatis):
Semua fungsi memiliki masa pakai statis. Oleh karena itu mereka ada setiap saat selama eksekusi program. Pengidentifikasi yang dinyatakan pada tingkat eksternal (yaitu, di luar semua blok dalam program pada tingkat definisi fungsi yang sama) selalu memiliki masa pakai global (statis).
Jika variabel lokal memiliki penginisialisasi, variabel diinisialisasi setiap kali dibuat (kecuali dinyatakan sebagai
static
). Parameter fungsi juga memiliki masa pakai lokal. Anda dapat menentukan masa pakai global untuk pengidentifikasi dalam blok dengan menyertakan penentu kelas penyimpananstatic
dalam deklarasinya. Setelah dideklarasikanstatic
, variabel mempertahankan nilainya dari satu entri blok ke blok berikutnya.
Meskipun pengidentifikasi dengan masa pakai global tersedia selama eksekusi program sumber (misalnya, variabel yang dideklarasikan secara eksternal atau variabel lokal yang dideklarasikan dengan kata kunci static
), mungkin tidak terlihat di semua bagian program. Lihat Cakupan dan Visibilitas untuk informasi tentang visibilitas, dan lihat Kelas Penyimpanan untuk diskusi nonterminal storage-class-specifier.
Memori dapat dialokasikan sesuai kebutuhan (dinamis) jika dibuat melalui penggunaan rutinitas pustaka khusus seperti malloc
. Karena menggunakan rutinitas pustaka, alokasi memori dinamis tidak dianggap sebagai bagian dari bahasa. Lihat fungsi malloc di Referensi Pustaka Run-Time.