อย่างที่ฉันเห็นตัวชี้สมาร์ทถูกใช้อย่างกว้างขวางในโครงการ C ++ ในโลกแห่งความเป็นจริง
แม้ว่าพอยน์เตอร์อัจฉริยะบางประเภทจะมีประโยชน์ในการสนับสนุน RAII และการถ่ายโอนความเป็นเจ้าของ แต่ก็มีแนวโน้มที่จะใช้พอยน์เตอร์ที่ใช้ร่วมกันตามค่าเริ่มต้นเป็นวิธีการ"เก็บขยะ"เพื่อให้โปรแกรมเมอร์ไม่ต้องคิดถึงการจัดสรรมาก .
ทำไมตัวชี้ที่ใช้ร่วมกันรับความนิยมมากกว่าการบูรณาการเก็บขยะที่เหมาะสมเช่นBoehm GC ? (หรือคุณเห็นด้วยเลยว่ามันได้รับความนิยมมากกว่า GCs จริงหรือไม่)
ฉันรู้เกี่ยวกับข้อดีสองประการของ GCs ทั่วไปมากกว่าการนับการอ้างอิง:
- ขั้นตอนวิธี GC ธรรมดาไม่มีปัญหากับการอ้างอิงรอบ
- การนับการอ้างอิงโดยทั่วไปจะช้ากว่า GC ที่เหมาะสม
อะไรคือสาเหตุของการใช้ตัวชี้สมาร์ทนับการอ้างอิง?
std::unique_ptr
มีความเพียงพอและเป็นเช่นนั้นมีค่าใช้จ่ายเป็นศูนย์เหนือพอยน์เตอร์ดิบในแง่ของประสิทธิภาพเวลาทำงาน เมื่อใช้std::shared_ptr
ทุกที่คุณจะต้องปิดบังความหมายของการเป็นเจ้าของทำให้สูญเสียหนึ่งในผลประโยชน์ที่สำคัญของตัวชี้สมาร์ทนอกเหนือจากการจัดการทรัพยากรอัตโนมัติ - ทำความเข้าใจเกี่ยวกับเจตนาที่อยู่เบื้องหลังรหัส