Rumah > pembangunan bahagian belakang > C++ > Bilakah Saya Harus Menggunakan (dan Elakkan) Operator `baru` dalam C ?

Bilakah Saya Harus Menggunakan (dan Elakkan) Operator `baru` dalam C ?

Susan Sarandon
Lepaskan: 2024-12-04 12:48:11
asal
569 orang telah melayarinya

When Should I Use (and Avoid) the `new` Operator in C  ?

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
Salin selepas log masuk

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:

  • Objek yang diperuntukkan secara dinamik oleh fungsi yang perlu mengembalikannya.
  • Objek yang diperuntukkan dalam memori yang diuruskan oleh pengagih tersuai.
  • Tatasusunan yang saiznya ditentukan pada masa jalan.

Contoh:

Point* p1 = new Point(0, 0); // Allocates p1 on the heap
...
delete p1; // Explicitly deallocates p1 when done
Salin selepas log masuk

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
Salin selepas log masuk

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!

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