Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Piawaian C Tidak Termasuk `std::shared_ptr` Bukan Atom?

Mengapakah Piawaian C Tidak Termasuk `std::shared_ptr` Bukan Atom?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 02:03:28781semak imbas

Why Doesn't the C   Standard Include a Non-Atomic `std::shared_ptr`?

Penunjuk Pintar Bukan Atom: Meneroka Ketiadaan dalam Piawaian C

Dalam bidang pengurusan memori C, std::shared_ptr berdiri sebagai penunjuk pintar yang luar biasa kerana operasi atomnya. Ini menimbulkan persoalan: mengapa tiada rakan bukan atom dalam perpustakaan memori standard?

1. Alternatif Bukan Atom kepada std::shared_ptr

Walaupun std::shared_ptr menawarkan gelagat atom, sesetengah senario mungkin tidak menjamin overhed sedemikian. Untuk menangani perkara ini, perpustakaan luaran telah muncul, menyediakan petunjuk pintar yang dikira rujukan bukan atom. Walau bagaimanapun, perpustakaan memori standard itu sendiri tidak mempunyai tawaran sedemikian.

2. Ketiadaan dalam C 11: Alasan dan Perbahasan

Walaupun utiliti yang dilihat, cadangan untuk versi bukan atom std::shared_ptr telah ditolak semasa proses penyeragaman C 11. Beberapa hujah mendorong keputusan ini:

  • Potensi penyalahgunaan: Petunjuk pintar bukan atom boleh digunakan secara tidak sengaja dalam konteks berbilang benang, yang membawa kepada ralat yang sukar dinyahpepijat.
  • Ketekalan dan kebolehoperasian: Mengekalkan satu shared_ptr "universal" dengan kefungsian atom yang dibenarkan untuk kesalingoperasian yang lebih lancar antara perpustakaan C, termasuk perpustakaan pihak ketiga.
  • Pertimbangan prestasi:
  • Kesimpulan
Ketiadaan std bukan atom::shared_ptr dalam piawaian C adalah hasil keputusan yang disengajakan berdasarkan kebimbangan tentang kemungkinan penyalahgunaan, konsistensi, prestasi dan fleksibiliti penyesuaian. Walaupun perpustakaan luaran boleh menyediakan alternatif sedemikian, piawaian itu sendiri telah mengutamakan faedah penunjuk pintar atom yang universal untuk pengurusan ingatan.

Atas ialah kandungan terperinci Mengapakah Piawaian C Tidak Termasuk `std::shared_ptr` Bukan Atom?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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