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