Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Objek Dimusnahkan dalam C?

Bagaimanakah Objek Dimusnahkan dalam C?

Barbara Streisand
Lepaskan: 2024-12-10 09:45:12
asal
646 orang telah melayarinya

How Are Objects Destroyed in C  ?

Pemusnahan Objek dalam C

Objek Berskop

Objek Automatik: Dimusnahkan dalam susunan terbalik definisi, apabila skop yang disertakan menyimpulkan.
Bukan Tempatan Statik Objek: Dimusnahkan dalam susunan takrifan terbalik, selepas pelaksanaan utama (pembolehubah global, data ahli statik).
Objek Statik Tempatan: Dibina aliran kawalan kali pertama melepasi takrifannya, dan dimusnahkan dalam susunan terbalik selepas pelaksanaan utama (pembolehubah statik dalam fungsi).

Kelas Asas dan Ahli Subobjek:**

Dimusnahkan dalam susunan takrifan terbalik, subobjek ahli pertama, kemudian subobjek kelas asas.

Elemen Tatasusunan:**

Dimusnahkan dalam tertib menurun. Jika pengecualian berlaku semasa pembinaan elemen n-th, elemen n-1 hingga 0 dimusnahkan terlebih dahulu.

Objek Sementara:**

Dibina apabila ungkapan prvalue jenis kelas dinilai. Dimusnahkan apabila ungkapan yang mengandungi melengkapkan penilaian. Jika pengecualian berlaku semasa penilaian, objek sementara dimusnahkan dengan betul.

Objek dan Tatasusunan Dinamik:**

Objek Dinamik: Diperuntukkan dengan Foo baharu dan dimusnahkan dengan padam p .
Susun Dinamik: Diperuntukkan dengan Foo[n] baharu dan dimusnahkan dengan padam[] p.

Dalam kedua-dua kes, cuba memusnahkan memori berbilang kali, mengakses selepas pemusnahan atau menggunakan mekanisme pemusnahan yang salah (cth., padam[] untuk objek tunggal ) mengakibatkan tingkah laku yang tidak ditentukan. Jika pengecualian berlaku semasa pembinaan, memori yang diperuntukkan secara dinamik dikeluarkan sebelum pengecualian itu disebarkan.

Petunjuk Pintar Mengira Rujukan:**

std::shared_ptr: Memusnahkan objek terurus sebagai yang terakhir std::shared_ptr objek yang merujuknya dimusnahkan.

Gelagat Pengecualian:

Pemusnah tidak boleh membuang pengecualian kerana ini boleh menamatkan program. Jika pengecualian berlaku semasa pemusnahan objek, ia disebarkan dan semua subobjek yang dimusnahkan sebelum ini dimusnahkan dengan betul. Walau bagaimanapun, jika pengecualian objek dinamik berlaku semasa pembinaan, memori dilepaskan sebelum pengecualian merambat dan pemusnah objek tidak dipanggil.

Atas ialah kandungan terperinci Bagaimanakah Objek Dimusnahkan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan