หน่วยความจำที่จัดสรรโดยใช้ฟังก์ชัน malloc และ calloc จะไม่ถูกยกเลิกการจัดสรรด้วยตัวเอง ดังนั้น วิธีฟรี จึงถูกใช้ ทุกครั้งที่มีการจัดสรรหน่วยความจำแบบไดนามิก ช่วยลดการสูญเสียของหน่วยความจำด้วยการปลดปล่อย
หน่วยความจำที่จัดสรรทำให้ว่างได้อย่างไร
ในภาษา C ฟังก์ชันห้องสมุด malloc ใช้เพื่อจัดสรรบล็อกของหน่วยความจำบนฮีป โปรแกรมเข้าถึงบล็อกของหน่วยความจำนี้ผ่านตัวชี้ที่ malloc ส่งคืน เมื่อไม่จำเป็นต้องใช้หน่วยความจำอีกต่อไป ตัวชี้จะถูกส่งต่อไปยังฟรี ซึ่งจะจัดสรรหน่วยความจำเพื่อนำไปใช้เพื่อวัตถุประสงค์อื่น
จะเกิดอะไรขึ้นถ้าคุณไม่ว่างหน่วยความจำที่จัดสรร
ในกรณีส่วนใหญ่ การจัดการคืนสินค้า memory ก่อนออกจากโปรแกรมจะไม่มีประโยชน์ ระบบปฏิบัติการจะเรียกคืนมันต่อไป Free จะแตะและเพจในวัตถุที่ตายแล้ว ระบบปฏิบัติการจะไม่ ผลที่ตามมา: ระวัง "เครื่องตรวจจับการรั่วไหล" ที่นับการจัดสรร
การจัดสรรหน่วยความจำแพงไหม
การวัดต้นทุนอย่างไร้เดียงสาของการจัดสรรและการเพิ่มหน่วยความจำขนาดใหญ่อาจสรุปได้ว่ามีค่าใช้จ่ายประมาณ 7.5 μs สำหรับแต่ละการจัดสรร/คู่ฟรี อย่างไรก็ตาม มีค่าใช้จ่ายต่อ MB แยกกันสามรายการสำหรับการจัดสรรขนาดใหญ่
realloc สามารถปล่อยพื้นที่หน่วยความจำที่จัดสรรไว้ได้หรือไม่ ถ้าใช่ อย่างไร
ฟังก์ชัน realloc จะจัดสรร จัดสรรใหม่ หรือเพิ่มบล็อกของหน่วยความจำที่ระบุโดย old_blk ตามกฎต่อไปนี้: หาก old_blk เป็น NULL บล็อกใหม่ของหน่วยความจำขนาดไบต์ เป็นจัดสรร ถ้าขนาดเป็นศูนย์ จะเรียกใช้ฟังก์ชันฟรีเพื่อปล่อยหน่วยความจำที่ old_blk ชี้ไป