ความแตกต่างที่สำคัญ – การจัดสรรหน่วยความจำแบบคงที่เทียบกับแบบไดนามิก
ในการเขียนโปรแกรม จำเป็นต้องเก็บข้อมูลการคำนวณ ข้อมูลเหล่านี้ถูกเก็บไว้ในหน่วยความจำ ตำแหน่งหน่วยความจำสำหรับจัดเก็บข้อมูลในการเขียนโปรแกรมคอมพิวเตอร์เรียกว่าตัวแปร ตัวแปรมีชนิดข้อมูลเฉพาะ ดังนั้นหน่วยความจำจึงถูกจัดสรรให้รันโปรแกรม หน่วยความจำสามารถจัดสรรได้สองวิธี คือการจัดสรรหน่วยความจำแบบคงที่และการจัดสรรหน่วยความจำแบบไดนามิก ในการจัดสรรหน่วยความจำแบบคงที่ เมื่อจัดสรรหน่วยความจำแล้ว จะไม่สามารถเปลี่ยนแปลงได้ หน่วยความจำใช้ซ้ำไม่ได้ แต่ในการจัดสรรหน่วยความจำแบบไดนามิก เมื่อจัดสรรหน่วยความจำแล้ว ก็สามารถเปลี่ยนแปลงได้ความแตกต่างที่สำคัญระหว่างการจัดสรรหน่วยความจำแบบคงที่และแบบไดนามิกคือ ในการจัดสรรหน่วยความจำแบบคงที่เมื่อจัดสรรหน่วยความจำแล้ว ขนาดหน่วยความจำจะคงที่ในขณะที่อยู่ในการจัดสรรหน่วยความจำแบบไดนามิก เมื่อจัดสรรหน่วยความจำแล้ว ขนาดหน่วยความจำสามารถเปลี่ยนแปลงได้
การจัดสรรหน่วยความจำแบบคงที่คืออะไร
ในการจัดสรรหน่วยความจำแบบคงที่ หน่วยความจำที่จัดสรรจะได้รับการแก้ไข เมื่อจัดสรรหน่วยความจำแล้ว จะไม่สามารถเปลี่ยนแปลงได้ ไม่สามารถเพิ่มหรือลดหน่วยความจำได้ ตัวอย่างเช่น ในภาษา C หากโปรแกรมเมอร์เขียน int x ซึ่งหมายความว่าตัวแปรสามารถเก็บค่าจำนวนเต็มได้ จำนวนไบต์ขึ้นอยู่กับคอมพิวเตอร์ นอกจากนี้ยังสามารถมีอาร์เรย์ เช่น. int x [5]; x นี้เป็นอาร์เรย์ที่สามารถจัดเก็บลำดับของข้อมูลที่เป็นประเภทเดียวกันได้ สามารถเก็บองค์ประกอบจำนวนเต็มได้ห้าองค์ประกอบ ไม่สามารถเก็บได้มากกว่าห้าองค์ประกอบ ใน Java อาร์เรย์สามารถสร้างเป็น, int arr=new int[5]; อาร์เรย์ 'arr' สามารถเก็บค่าจำนวนเต็มได้ 5 ค่าและไม่สามารถเก็บได้มากกว่านั้น
รูปที่ 01: วิธีการจัดสรรหน่วยความจำ
ในการจัดสรรหน่วยความจำแบบคงที่ เมื่อตัวแปรได้รับการจัดสรรแล้ว ตัวแปรเหล่านั้นจะคงอยู่ถาวร หลังจากการจัดสรรครั้งแรก โปรแกรมเมอร์ไม่สามารถปรับขนาดหน่วยความจำได้ หากโปรแกรมเมอร์จัดสรรอาร์เรย์ที่สามารถเก็บองค์ประกอบได้ 10 รายการ จะไม่สามารถเก็บค่าได้มากกว่าจำนวนที่ระบุ หากโปรแกรมเมอร์เริ่มจัดสรรอาร์เรย์ที่สามารถเก็บ 10 องค์ประกอบ แต่ต้องการเพียง 5 องค์ประกอบ แสดงว่าหน่วยความจำสูญเสียไป หน่วยความจำนั้นไม่จำเป็นอีกต่อไป แต่ก็ไม่สามารถใช้หน่วยความจำซ้ำได้การจัดสรรหน่วยความจำแบบคงที่ได้รับการแก้ไขแล้ว แต่การใช้งานนั้นง่ายและสะดวกและรวดเร็วเช่นกัน
การจัดสรรหน่วยความจำแบบไดนามิกคืออะไร
บางครั้งจำเป็นต้องเปลี่ยนขนาดหน่วยความจำ จึงสามารถจัดสรรหน่วยความจำแบบไดนามิกได้ หน่วยความจำสามารถขยายหรือย่อได้ขึ้นอยู่กับการแทรกและการลบองค์ประกอบข้อมูล เรียกว่าการจัดสรรหน่วยความจำแบบไดนามิก
ในภาษา C ไฟล์ส่วนหัว stdlib.h มีสี่ฟังก์ชันสำหรับการจัดสรรหน่วยความจำแบบไดนามิก พวกเขาเป็น calloc, malloc, realloc และฟรี ฟังก์ชัน malloc() จะจัดสรรขนาดไบต์ที่ต้องการและส่งคืนตัวชี้เป็นโมฆะ โดยชี้ไปที่ไบต์แรกของหน่วยความจำที่จัดสรร ฟังก์ชัน calloc() จะจัดสรรขนาดไบต์ที่ต้องการและกำหนดค่าเริ่มต้นให้เป็นศูนย์ จากนั้นส่งคืนตัวชี้เป็นโมฆะไปยังหน่วยความจำ ฟังก์ชัน free() ใช้เพื่อจัดสรรหน่วยความจำที่จัดสรรใหม่ และฟังก์ชัน realloc สามารถปรับเปลี่ยนหน่วยความจำที่จัดสรรไว้ก่อนหน้านี้ได้ หลังจากจัดสรรหน่วยความจำโดยใช้ calloc หรือ malloc แล้ว ขนาดหน่วยความจำจะคงที่ แต่สามารถเพิ่มหรือลดได้โดยใช้ฟังก์ชัน reallocใน Java สามารถใช้คอลเล็กชันสำหรับการจัดสรรหน่วยความจำแบบไดนามิกได้
ข้อดีหลักของการจัดสรรหน่วยความจำแบบไดนามิกคือช่วยประหยัดหน่วยความจำ โปรแกรมเมอร์สามารถจัดสรรหน่วยความจำหรือปล่อยหน่วยความจำได้ตามความจำเป็น สามารถจัดสรรหน่วยความจำใหม่ได้ในระหว่างการดำเนินการ และสามารถเพิ่มหน่วยความจำได้เมื่อไม่ต้องการ การจัดสรรหน่วยความจำแบบไดนามิกยังมีประสิทธิภาพมากกว่าการจัดสรรหน่วยความจำแบบคงที่ ข้อเสียอย่างหนึ่งคือการใช้การจัดสรรหน่วยความจำแบบไดนามิกนั้นซับซ้อน
ความคล้ายคลึงกันระหว่างการจัดสรรหน่วยความจำแบบคงที่และแบบไดนามิกคืออะไร
- ทั้งสองเป็นกลไกการจัดสรรหน่วยความจำ
- โปรแกรมเมอร์ควรใช้งานทั้งคู่ด้วยตนเอง
ความแตกต่างระหว่างการจัดสรรหน่วยความจำแบบคงที่และแบบไดนามิกคืออะไร
แบบคงที่เทียบกับการจัดสรรหน่วยความจำแบบไดนามิก |
|
การจัดสรรหน่วยความจำแบบคงที่เป็นวิธีการจัดสรรหน่วยความจำ และเมื่อจัดสรรหน่วยความจำแล้ว ก็จะได้รับการแก้ไข | การจัดสรรหน่วยความจำแบบไดนามิกเป็นวิธีการจัดสรรหน่วยความจำ และเมื่อจัดสรรหน่วยความจำแล้ว ก็สามารถเปลี่ยนแปลงได้ |
ดัดแปลง | |
ในการจัดสรรหน่วยความจำแบบคงที่ ไม่สามารถปรับขนาดหลังจากการจัดสรรครั้งแรก | ในการจัดสรรหน่วยความจำแบบไดนามิก สามารถย่อหรือขยายหน่วยความจำให้ใหญ่สุดได้ตามต้องการ |
การนำไปใช้ | |
การจัดสรรหน่วยความจำแบบคงที่นั้นง่ายต่อการใช้งาน | การจัดสรรหน่วยความจำแบบไดนามิกนั้นซับซ้อนในการดำเนินการ |
ความเร็ว | |
ในหน่วยความจำคงที่ การดำเนินการจัดสรรเร็วกว่าการจัดสรรหน่วยความจำแบบไดนามิก | ในหน่วยความจำแบบไดนามิก การดำเนินการจัดสรรจะช้ากว่าการจัดสรรหน่วยความจำแบบคงที่ |
การใช้หน่วยความจำ | |
ในการจัดสรรหน่วยความจำแบบคงที่ ไม่สามารถใช้หน่วยความจำที่ไม่ได้ใช้ซ้ำได้ | การจัดสรรหน่วยความจำแบบไดนามิกช่วยให้นำหน่วยความจำกลับมาใช้ใหม่ได้ โปรแกรมเมอร์สามารถจัดสรรหน่วยความจำเพิ่มเติมเมื่อจำเป็น เขาสามารถปลดปล่อยความทรงจำเมื่อจำเป็น |
สรุป – การจัดสรรหน่วยความจำแบบคงที่เทียบกับแบบไดนามิก
ในการเขียนโปรแกรม การจัดสรรหน่วยความจำแบบคงที่และการจัดสรรหน่วยความจำแบบไดนามิกเป็นสองกลไกในการจัดสรรหน่วยความจำ ความแตกต่างระหว่างการจัดสรรหน่วยความจำแบบสแตติกและไดนามิกคือ ในการจัดสรรหน่วยความจำแบบคงที่เมื่อจัดสรรหน่วยความจำแล้ว ขนาดหน่วยความจำจะคงที่ในขณะที่อยู่ในการจัดสรรหน่วยความจำแบบไดนามิก เมื่อจัดสรรหน่วยความจำแล้ว สามารถเปลี่ยนขนาดหน่วยความจำได้ โปรแกรมเมอร์สามารถตัดสินใจได้ว่าหน่วยความจำควรเป็นแบบสแตติกหรือไดนามิกขึ้นอยู่กับแอพพลิเคชั่น
ดาวน์โหลดไฟล์ PDF ของ Static vs Dynamic Memory Allocation
คุณสามารถดาวน์โหลดไฟล์ PDF ของบทความนี้และใช้เพื่อวัตถุประสงค์ออฟไลน์ตามบันทึกการอ้างอิง โปรดดาวน์โหลดไฟล์ PDF ที่นี่: ความแตกต่างระหว่างการจัดสรรหน่วยความจำแบบคงที่และแบบไดนามิก