8
ข้อเสียของการจัดการหน่วยความจำตามขอบเขต
ฉันชอบการจัดการหน่วยความจำตามขอบเขต (SBMM) หรือRAIIจริงๆแล้วเนื่องจากชุมชน C ++ เป็นที่รู้จักกันมากกว่าปกติ เท่าที่ฉันรู้ยกเว้น C ++ (และ C) ไม่มีภาษากระแสหลักอื่น ๆ ที่ใช้อยู่ในปัจจุบันซึ่งทำให้ SBMM / RAII เป็นกลไกการจัดการหน่วยความจำหลักและแทนที่จะต้องการใช้การรวบรวมขยะ (GC) ฉันพบว่ามันค่อนข้างสับสนตั้งแต่ SBMM ทำให้โปรแกรมกำหนดค่าได้มากขึ้น (คุณสามารถบอกได้อย่างแม่นยำเมื่อวัตถุถูกทำลาย) ในภาษาที่ใช้ GC คุณมักจะต้องทำการจัดการทรัพยากรด้วยตนเอง (ดูที่การปิดไฟล์ใน Java เช่น) ซึ่งบางส่วนเอาชนะวัตถุประสงค์ของ GC และยังมีข้อผิดพลาดเกิดขึ้นได้ง่าย หน่วยความจำฮีปสามารถ (ขอบเขตอย่างสวยงามมาก, imo) ได้เช่นกัน (ดูstd::shared_ptrใน C ++) ทำไม SBMM ถึงไม่ใช้กันอย่างแพร่หลาย? ข้อเสียของมันคืออะไร?