Bila Menggunakan dan Elakkan "baharu" dalam C
Apabila menginstant objek dalam C , adalah penting untuk memahami bila menggunakan "baharu " pengendali dan apabila tidak. Perbezaan ini amat penting untuk pengaturcara yang beralih daripada C# atau Java.
Elakkan "baharu" untuk Pembolehubah dengan Skop Ditentukan
Jika anda mahu objek wujud hanya dalam skop tertentu, seperti fungsi atau gelung, anda tidak perlu menggunakan "baharu." Sebaliknya, isytiharkan objek secara terus, seperti dalam contoh ini:
void foo() { Point p = Point(0,0); } // p is destroyed when foo() exits
Gunakan "baharu" untuk Objek dengan Jangka Hayat Tidak Ditakrifkan
Jika anda mahu objek kekal dalam kewujudan sehingga dipadamkan secara jelas, gunakan "baharu." Ini adalah kes bagi objek dengan jangka hayat yang tidak ditentukan, seperti:
Contoh:
Point* p1 = new Point(0, 0); // Allocates p1 on the heap ... delete p1; // Explicitly deallocates p1 when done
Perbezaan antara Pembolehubah dan Penunjuk
Menggunakan "baharu" untuk pembolehubah (seperti dalam Point* p1 = new Point(0, 0);) boleh mengelirukan. Ia sebenarnya tidak memperuntukkan objek pada timbunan; sebaliknya, ia memperuntukkan penunjuk kepada objek. Objek itu sendiri kekal diperuntukkan di tempatnya. Ini hanya kelihatan apabila membuat pembolehubah ahli dalam kelas.
Peruntukan Setempat untuk Ahli Kelas
Ahli kelas diperuntukkan secara automatik apabila tika kelas dibuat. Ini dikenali sebagai peruntukan "di tempat". Contohnya:
class Foo { Point p; }; // p is allocated within Foo objects
Pertimbangan Prestasi
Memperuntukkan objek dengan "baharu" adalah lebih mahal daripada peruntukan di tempat. Adalah disyorkan untuk meminimumkan penggunaannya untuk mengoptimumkan prestasi.
Kesimpulan
Memahami bila perlu menggunakan "baharu" dan bila tidak menggunakannya adalah penting untuk mengurus memori dengan berkesan dalam C . Dengan mengikuti garis panduan ini, anda boleh mengelakkan kebocoran memori dan isu prestasi, memastikan kestabilan dan kecekapan kod anda.
Atas ialah kandungan terperinci Bilakah Saya Harus Menggunakan (dan Elakkan) Operator `baru` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!