ตัวแปรถูกจัดเก็บอย่างไร?
ตัวแปรถูกจัดเก็บอย่างไร?

วีดีโอ: ตัวแปรถูกจัดเก็บอย่างไร?

วีดีโอ: ตัวแปรถูกจัดเก็บอย่างไร?
วีดีโอ: การประกาศค่าตัวแปร 2024, พฤศจิกายน
Anonim

ตัวแปร มักจะ เก็บไว้ ในแรม ตัวมันเองมักจะเป็นไปตามกฎข้างต้น (ตัวชี้ที่ประกาศภายในฟังก์ชันคือ เก็บไว้ บนสแต็ก) แต่ข้อมูลที่ชี้ไป (บล็อกหน่วยความจำเองหรือวัตถุที่คุณสร้างด้วยใหม่) คือ เก็บไว้ บนกอง

ในทำนองเดียวกันอาจมีคนถามว่าตัวแปรถูกเก็บไว้ที่ไหน?

ตัวแปรโกลบอลและสแตติกทั้งหมดจะถูกเก็บไว้ในเซ็กเมนต์ข้อมูล ในขณะที่ค่าคงที่จะถูกเก็บไว้ในเซกเมนต์โค้ด ตัวแปรส่วนกลางสามารถอยู่ในสองที่ ขึ้นอยู่กับวิธีการตั้งค่า - for ตัวอย่าง const globals อาจอยู่ในส่วนแบบอ่านอย่างเดียวของไฟล์เรียกทำงาน

ในทำนองเดียวกันวิธีการเก็บตัวแปรใน Java? วัตถุทั้งหมดใน Java เป็น เก็บไว้ บนกอง NS " ตัวแปร " ที่มีการอ้างอิงถึงพวกเขาสามารถอยู่ในสแต็กหรือสามารถมีอยู่ในวัตถุอื่น ๆ (จากนั้นก็ไม่ได้จริงๆ ตัวแปร แต่ฟิลด์) ซึ่งทำให้พวกเขาอยู่ในกองด้วย ส่วน Heap มีอ็อบเจ็กต์ (อาจมีการอ้างอิง ตัวแปร ).

คำถามก็คือ ตัวแปรถูกเก็บไว้ในหน่วยความจำอย่างไร?

NS หน่วยความจำ สล็อตสำหรับ ตัวแปรจะถูกเก็บไว้ บนสแต็กหรือฮีป ขึ้นอยู่กับบริบทที่มีการประกาศ: แต่ละท้องถิ่น ตัวแปร (กล่าวคือหนึ่งประกาศในวิธีการ) is เก็บไว้ บนสแต็ก ทุกสถิต ตัวแปรจะถูกเก็บไว้ บนฮีป ไม่ว่าจะประกาศในประเภทอ้างอิงหรือประเภทค่า

ตัวแปรท้องถิ่นถูกเก็บไว้ในสแต็กอย่างไร

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