Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah C Destructors Dipanggil untuk Pembolehubah Global dan Statik?

Adakah C Destructors Dipanggil untuk Pembolehubah Global dan Statik?

DDD
DDDasal
2024-11-06 13:22:02394semak imbas

Do C   Destructors Get Called for Global and Static Variables?

Adakah C Memanggil Pemusnah untuk Pembolehubah Statik Global dan Kelas?

Bertentangan dengan beberapa andaian, C memang memanggil pemusnah untuk kedua-dua global dan kelas -pembolehubah statik. Pemusnahannya berlaku pada dua persimpangan tertentu:

  1. Setelah Kembali dari Utama: Apabila fungsi main() berakhir, semua pembolehubah global dan statik kelas dimusnahkan. Ini bersesuaian dengan § 3.6.3 piawai C 03, yang mewajibkan pemusnahan ini "akibat daripada kembali dari utama."
  2. Setelah Memanggil Keluar: Jika fungsi exit() ialah digunakan dalam program anda, ia mencetuskan pemusnahan pembolehubah global dan statik kelas "akibat daripada memanggil keluar," seperti yang digariskan dalam § 3.6.3.

Perlu diperhatikan bahawa susunan pemusnahan untuk pembolehubah ini mencerminkan susunan terbalik pembina atau permulaan dinamiknya. Tambahan pula, mengikut § 9.4.2 7, ahli data statik dimulakan dan dimusnahkan secara identik dengan objek bukan tempatan.

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pemusnah tanpa gelagat yang boleh diperhatikan mungkin tidak digunakan. Ini diterokai lebih lanjut dalam respons Terry Mahaffey kepada "Adakah pemusnah C dijamin tidak akan dipanggil sehingga akhir blok?"

Atas ialah kandungan terperinci Adakah C Destructors Dipanggil untuk Pembolehubah Global dan Statik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn