Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

free() รู้ขนาดของหน่วยความจำที่จะจัดสรรได้อย่างไร


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

free(ptr);

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

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