Rumah > pembangunan bahagian belakang > C++ > Bolehkah Pengkompil C Mengoptimumkan Peruntukan Memori Timbunan Menggunakan `baru`?

Bolehkah Pengkompil C Mengoptimumkan Peruntukan Memori Timbunan Menggunakan `baru`?

Patricia Arquette
Lepaskan: 2024-12-02 02:15:11
asal
563 orang telah melayarinya

Can C   Compilers Optimize Out Heap Memory Allocations Using `new`?

Mengoptimumkan Peruntukan Memori Timbunan

Dalam C , pengendali baharu biasanya digunakan untuk memperuntukkan memori pada timbunan. Walau bagaimanapun, persoalan timbul sama ada pengkompil dibenarkan untuk mengoptimumkan peruntukan memori timbunan ini.

Argumen untuk Pengoptimuman

Menurut N3664: Menjelaskan Peruntukan Memori, pengkompil dibenarkan untuk mengoptimumkan sekitar memori peruntukan. Pengoptimuman ini adalah berdasarkan peraturan "seolah-olah", yang menyatakan bahawa pelaksanaan boleh mengabaikan keperluan selagi hasilnya kelihatan seolah-olah keperluan itu dipenuhi. Memandangkan baru boleh membuang pengecualian, sesetengah pihak berpendapat bahawa ia tidak boleh dioptimumkan kerana kelakuannya yang boleh diperhatikan.

Hujah Balas: Peraturan "Seolah-Seolah"

Walau bagaimanapun, penyokong pengoptimuman berpendapat bahawa Peraturan "seolah-olah" terpakai walaupun dalam kes ini. Mereka berhujah bahawa pengkompil boleh menentukan bahawa peruntukan tidak akan menyebabkan pengecualian dan menghapuskan panggilan baharu tidak akan melanggar peraturan. Selain itu, dihujahkan bahawa pengkompil boleh membuktikan bahawa tiada penggantian pengendali global baharu akan menjejaskan gelagat yang boleh diperhatikan, membolehkan ia melakukan pengoptimuman.

Variasi dan Pengecualian

Walaupun kebanyakan penyusun tidak mengoptimumkan panggilan baharu, beberapa pengecualian wujud. Clang, sebagai contoh, telah melaksanakan pengoptimuman yang kemudiannya menjadi sebahagian daripada C 14. Walau bagaimanapun, dalam kes di mana versi baru yang tidak dibuang digunakan atau di mana pengendali pengganti baharu boleh dilakukan, pengoptimuman mungkin tidak dilakukan.

Kesimpulan

Keupayaan pengkompil untuk mengoptimumkan peruntukan memori timbunan adalah isu yang kompleks dengan tafsiran yang berbeza-beza bagi peraturan "seolah-olah". Walaupun sesetengah pelaksanaan membenarkan pengoptimuman sedemikian dalam keadaan tertentu, yang lain mematuhi piawaian dengan ketat dan tidak melaksanakannya.

Atas ialah kandungan terperinci Bolehkah Pengkompil C Mengoptimumkan Peruntukan Memori Timbunan Menggunakan `baru`?. 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