การจัดสรรแบบคงที่คืออะไร?

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

คุณสามารถกำหนดค่าต่างๆ ให้กับตัวแปร เช่น สตริงข้อความ ตัวเลข หรืออาร์เรย์ของข้อมูล และอื่นๆ อีกมากมาย หลายภาษาต้องการให้คุณประกาศประเภทของข้อมูลที่จะจัดเก็บในตัวแปรที่จำกัดให้คุณใช้เฉพาะตัวเลข เป็นต้น

อีกสิ่งหนึ่งที่แตกต่างระหว่างภาษาโปรแกรมคือต้องประกาศประเภทการจัดสรรของตัวแปร บางภาษาไม่ต้องการสิ่งนี้ ในขณะที่บางภาษานั้นเข้มงวด มีสองประเภทการจัดสรรหลัก: แบบคงที่และแบบไดนามิก

คงที่กับไดนามิก

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

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

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

ฟังก์ชันและรูทีนย่อย

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

บทสรุป

การจัดสรรแบบสแตติกคือการจัดสรรพื้นที่หน่วยความจำสำหรับตัวแปร คอมไพเลอร์จะล็อคพื้นที่ว่างที่จำเป็นในเวลาคอมไพล์ แม้ว่าค่าของตัวแปรจะเปลี่ยนแปลงได้ แต่จำนวนพื้นที่ที่จัดสรรให้นั้นไม่สามารถเปลี่ยนแปลงได้ ขีดจำกัดนี้ป้องกันไม่ให้พื้นที่ว่างหากไม่จำเป็น นอกจากนี้ยังป้องกันไม่ให้มีพื้นที่ว่างเพิ่มขึ้นหากจำเป็น การจัดสรรแบบคงที่มีข้อได้เปรียบด้านประสิทธิภาพเหนือการจัดสรรแบบไดนามิก แต่มีความยืดหยุ่นน้อยกว่า โดยทั่วไปจะใช้ทั้งตัวแปรคงที่และไดนามิกเนื่องจากทั้งคู่ให้ประโยชน์



Leave a Comment

วิธีการโคลนฮาร์ดไดรฟ์

วิธีการโคลนฮาร์ดไดรฟ์

ในยุคดิจิทัลสมัยใหม่ ที่ข้อมูลเป็นทรัพย์สินที่มีค่า การโคลนฮาร์ดไดรฟ์บน Windows อาจเป็นกระบวนการที่สำคัญสำหรับหลายๆ คน คู่มือที่ครอบคลุมนี้

วิธีแก้ไขไดรเวอร์ WUDFRd ไม่สามารถโหลดบน Windows 10 ได้

วิธีแก้ไขไดรเวอร์ WUDFRd ไม่สามารถโหลดบน Windows 10 ได้

คุณกำลังเผชิญกับข้อความแสดงข้อผิดพลาดขณะบูตเครื่องคอมพิวเตอร์ซึ่งระบุว่าไดรเวอร์ WUDFRd ไม่สามารถโหลดบนคอมพิวเตอร์ของคุณได้ใช่หรือไม่?

วิธีแก้ไขรหัสข้อผิดพลาด NVIDIA GeForce Experience 0x0003

วิธีแก้ไขรหัสข้อผิดพลาด NVIDIA GeForce Experience 0x0003

คุณพบประสบการณ์รหัสข้อผิดพลาด NVIDIA GeForce 0x0003 บนเดสก์ท็อปของคุณหรือไม่? หากใช่ โปรดอ่านบล็อกเพื่อดูวิธีแก้ไขข้อผิดพลาดนี้อย่างรวดเร็วและง่ายดาย

Roomba Stops, Sticks and Turns Around – Fix

Roomba Stops, Sticks and Turns Around – Fix

Fix a problem where your Roomba robot vacuum stops, sticks, and keeps turning around.

วิธีลบ GPU ออกจากพีซีที่ใช้ Windows ในปี 2023

วิธีลบ GPU ออกจากพีซีที่ใช้ Windows ในปี 2023

คุณจำเป็นต้องลบ GPU ออกจากพีซีของคุณหรือไม่? เข้าร่วมกับฉันในขณะที่ฉันอธิบายวิธีลบ GPU ออกจากพีซีของคุณในคำแนะนำทีละขั้นตอนนี้

วิธีการติดตั้ง NVMe SSD ในเดสก์ท็อปและแล็ปท็อป

วิธีการติดตั้ง NVMe SSD ในเดสก์ท็อปและแล็ปท็อป

ซื้อ NVMe M.2 SSD ใหม่ แต่ไม่รู้ว่าจะติดตั้งอย่างไร? อ่านเพื่อเรียนรู้วิธีติดตั้ง NVMe SSD บนแล็ปท็อปหรือเดสก์ท็อป

Logic Bomb คืออะไร?

Logic Bomb คืออะไร?

ลอจิกบอมบ์คือเหตุการณ์ด้านความปลอดภัยที่ผู้โจมตีดำเนินการล่าช้า อ่านต่อเพื่อหาข้อมูลเพิ่มเติม

SoC คืออะไร?

SoC คืออะไร?

หากคุณเคยดูภายในพีซีทาวเวอร์ คุณจะเห็นว่ามีส่วนประกอบต่างๆ มากมาย แล็ปท็อปทั่วไปของคุณมีส่วนประกอบที่เหมือนกันเป็นส่วนใหญ่

การเข้ารหัสแบบอสมมาตรคืออะไร?

การเข้ารหัสแบบอสมมาตรคืออะไร?

อัลกอริธึมการเข้ารหัสแบบอสมมาตรใช้สองคีย์ที่แตกต่างกัน คีย์หนึ่งใช้สำหรับเข้ารหัสและอีกคีย์หนึ่งสำหรับถอดรหัส

Steam Deck: วิธีฟอร์แมตการ์ด SD

Steam Deck: วิธีฟอร์แมตการ์ด SD

Steam Deck มีตัวเลือกพื้นที่เก็บข้อมูลสามแบบ: 64GB eMMC, 256GB NVMe SSD และ 512GB NVMe SSD ขึ้นอยู่กับคลังเกมของคุณและขนาดของเกม