สารบัญ:

C มีตัวเก็บขยะหรือไม่?
C มีตัวเก็บขยะหรือไม่?

วีดีโอ: C มีตัวเก็บขยะหรือไม่?

วีดีโอ: C มีตัวเก็บขยะหรือไม่?
วีดีโอ: C-Site Focus - เก็บขยะริมแม่น้ำกระบุรี รักษาสายน้ำเพื่อชีวิต : คุณเล่าเราขยาย (10 มิ.ย. 65) 2024, พฤศจิกายน
Anonim

C ไม่ ไม่ มี อัตโนมัติ เก็บขยะ . หากคุณลืมติดตามวัตถุ คุณ มี สิ่งที่เรียกว่า 'หน่วยความจำรั่ว' หน่วยความจำจะยังคงได้รับการจัดสรรให้กับโปรแกรมโดยรวม แต่จะไม่มีอะไรสามารถใช้งานได้หากคุณทำตัวชี้สุดท้ายหายไป การจัดการทรัพยากรหน่วยความจำเป็นข้อกำหนดที่สำคัญใน ค โปรแกรม

เมื่อพิจารณาตามนี้แล้ว C ขยะถูกเก็บรวบรวมหรือไม่?

C++ ไม่ต้องการ a คนเก็บขยะ เพราะมันไม่มี ขยะ . ใน C ++ สมัยใหม่คุณใช้สมาร์ทพอยน์เตอร์ดังนั้นจึงไม่มี ขยะ.

แล้วหน้าที่ของตัวเก็บขยะคืออะไร? คนเก็บขยะ อยู่ในความดูแลของ สะสม และถอด ของเสีย และวัสดุรีไซเคิลเพื่อการแปรรูปต่อไป งานประจำ หน้าที่ จดทะเบียนใน a เก็บขยะ ตัวอย่าง Resume ที่กำลังดำเนินการอยู่ ของเสีย รถรวบรวมตามเส้นทางที่กำหนด สะสม ปฏิเสธและรายงานต่อผู้บังคับบัญชา

อย่างนั้น การรวบรวมขยะ C คืออะไร?

เก็บขยะ (GC) เป็นกลไกที่ให้การเรียกคืนหน่วยความจำอัตโนมัติสำหรับบล็อกหน่วยความจำที่ไม่ได้ใช้ โปรแกรมเมอร์จะจัดสรรหน่วยความจำแบบไดนามิก แต่เมื่อไม่ต้องการบล็อกอีกต่อไป พวกเขาไม่ต้องส่งคืนหน่วยความจำนั้นไปยังระบบอย่างชัดเจนด้วยการเรียก free()

คุณทำถังขยะได้อย่างไร?

วิธีที่ง่ายที่สุดในการนำตัวรวบรวมขยะไปใช้คือ:

  1. ตรวจสอบให้แน่ใจว่าคุณสามารถเปรียบเทียบรากของโลกได้
  2. ตรวจสอบให้แน่ใจว่าคุณสามารถสำรวจฮีปได้เช่น ทุกค่าในฮีปเป็นอ็อบเจ็กต์ที่ใช้เมธอด Visit ที่ส่งคืนการอ้างอิงทั้งหมดจากออบเจกต์นั้น
  3. เก็บชุดของค่าที่จัดสรรไว้ทั้งหมด