Kebocoran Memori dan Penyalahgunaan 'baharu' dalam C
Tidak seperti rakan sejawatannya C#, operator 'baru' dalam C memperuntukkan memori secara dinamik, mencipta objek dengan jangka hayat yang panjang. Ini menimbulkan potensi cabaran dalam pengurusan ingatan.
Kebocoran Memori Dijelaskan
Apabila menggunakan 'baharu' untuk memperuntukkan memori, objek yang diperuntukkan berada dalam timbunan, kawasan memori di luar timbunan yang digunakan untuk storan pembolehubah automatik. Memandangkan objek ini melebihi skopnya, ia mesti dikeluarkan secara manual menggunakan 'padam' untuk mengelakkan kebocoran memori.
Coretan kod yang anda berikan menunjukkan perkara ini:
A *object1 = new A(); B object2 = *(new B());
Pengurusan Memori yang Betul
Untuk mengelakkan kebocoran memori, ikut garis panduan ini:
Contoh dengan Penunjuk Pintar:
std::unique_ptr<A> object1 = std::make_unique<A>(); std::shared_ptr<B> object2 = std::make_shared<B>();
Dengan penunjuk pintar, objek akan dipadamkan secara automatik apabila ia tidak diperlukan lagi, memastikan pengurusan memori yang betul.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Kebocoran Memori Apabila Menggunakan `baru` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!