ทำความเข้าใจกับหน่วยความจำที่เก็บไว้ในฟังก์ชัน
ในบริบทของฟังก์ชัน `retains` หมายถึงข้อเท็จจริงที่ว่าฟังก์ชันไม่ปล่อยหรือทำให้หน่วยความจำว่างที่ใช้ แต่จะเก็บหน่วยความจำไว้และรับผิดชอบในการจัดสรรคืนเมื่อไม่จำเป็นอีกต่อไป กล่าวอีกนัยหนึ่ง ฟังก์ชันที่เก็บรักษาหน่วยความจำจะไม่ส่งคืนหน่วยความจำไปยังฮีปหรือสแต็กหลังจากใช้งานเสร็จแล้ว ซึ่งหมายความว่าฟังก์ชันมีหน้าที่รับผิดชอบในการจัดการอายุการใช้งานของหน่วยความจำ ซึ่งอาจมีประโยชน์ในบางสถานการณ์ แต่ยังต้องมีการจัดการอย่างระมัดระวังเพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำ
ตัวอย่างเช่น พิจารณาฟังก์ชันที่จัดสรรหน่วยความจำสำหรับโครงสร้างข้อมูลขนาดใหญ่ จากนั้นส่งคืน ชี้ไปที่โครงสร้างข้อมูลนั้นไปยังผู้โทร หากฟังก์ชันไม่ปล่อยหน่วยความจำเมื่อไม่ต้องการอีกต่อไป หน่วยความจำจะยังคงอยู่โดยฟังก์ชัน และผู้เรียกจะต้องรับผิดชอบในการจัดสรรคืนในภายหลัง สิ่งนี้อาจทำให้หน่วยความจำรั่วได้หากผู้โทรลืมจัดสรรหน่วยความจำ ในทางกลับกัน ฟังก์ชันที่ส่งคืนตัวชี้ไปยังหน่วยความจำที่จัดสรรบนสแต็กหรือฮีป จากนั้นจะปล่อยหน่วยความจำเมื่อไม่ต้องการอีกต่อไป (เช่น ` malloc` และ `free`) จะไม่เก็บหน่วยความจำไว้ หน่วยความจำจะถูกปล่อยกลับไปยังฮีปหรือสแต็กทันทีที่ฟังก์ชันใช้งานเสร็จสิ้น ดังนั้นผู้เรียกจึงไม่จำเป็นต้องกังวลเกี่ยวกับการจัดการอายุการใช้งานของหน่วยความจำ



