วีดีโอ: ตัวแปรถูกจัดเก็บอย่างไร?
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
ตัวแปร มักจะ เก็บไว้ ในแรม ตัวมันเองมักจะเป็นไปตามกฎข้างต้น (ตัวชี้ที่ประกาศภายในฟังก์ชันคือ เก็บไว้ บนสแต็ก) แต่ข้อมูลที่ชี้ไป (บล็อกหน่วยความจำเองหรือวัตถุที่คุณสร้างด้วยใหม่) คือ เก็บไว้ บนกอง
ในทำนองเดียวกันอาจมีคนถามว่าตัวแปรถูกเก็บไว้ที่ไหน?
ตัวแปรโกลบอลและสแตติกทั้งหมดจะถูกเก็บไว้ในเซ็กเมนต์ข้อมูล ในขณะที่ค่าคงที่จะถูกเก็บไว้ในเซกเมนต์โค้ด ตัวแปรส่วนกลางสามารถอยู่ในสองที่ ขึ้นอยู่กับวิธีการตั้งค่า - for ตัวอย่าง const globals อาจอยู่ในส่วนแบบอ่านอย่างเดียวของไฟล์เรียกทำงาน
ในทำนองเดียวกันวิธีการเก็บตัวแปรใน Java? วัตถุทั้งหมดใน Java เป็น เก็บไว้ บนกอง NS " ตัวแปร " ที่มีการอ้างอิงถึงพวกเขาสามารถอยู่ในสแต็กหรือสามารถมีอยู่ในวัตถุอื่น ๆ (จากนั้นก็ไม่ได้จริงๆ ตัวแปร แต่ฟิลด์) ซึ่งทำให้พวกเขาอยู่ในกองด้วย ส่วน Heap มีอ็อบเจ็กต์ (อาจมีการอ้างอิง ตัวแปร ).
คำถามก็คือ ตัวแปรถูกเก็บไว้ในหน่วยความจำอย่างไร?
NS หน่วยความจำ สล็อตสำหรับ ตัวแปรจะถูกเก็บไว้ บนสแต็กหรือฮีป ขึ้นอยู่กับบริบทที่มีการประกาศ: แต่ละท้องถิ่น ตัวแปร (กล่าวคือหนึ่งประกาศในวิธีการ) is เก็บไว้ บนสแต็ก ทุกสถิต ตัวแปรจะถูกเก็บไว้ บนฮีป ไม่ว่าจะประกาศในประเภทอ้างอิงหรือประเภทค่า
ตัวแปรท้องถิ่นถูกเก็บไว้ในสแต็กอย่างไร
การจัดเก็บตัวแปรโลคัล บน ซ้อนกัน เป็นรายละเอียดการใช้งาน – โดยทั่วไปเป็นการเพิ่มประสิทธิภาพ คุณสามารถคิดแบบนี้ เมื่อเข้าสู่ฟังก์ชัน พื้นที่สำหรับทุกคน ตัวแปรท้องถิ่น ได้รับการจัดสรรที่ไหนสักแห่ง สิ่งนี้ตรงกันข้ามกับ ตัวแปร จัดสรรบนกองซึ่งมีที่อยู่ของตัวเอง เก็บไว้ ในอื่นๆ ตัวแปร.