ตามVisualizer รหัส Python นี้สตริง Python ได้รับการจัดสรรในสแต็กและไม่ได้อยู่ในกอง
ทำไมนี้ ฉันคิดว่าพวกเขาจะคล้ายกับ Java ที่มีการจัดสรร Strings บนกอง
ตามVisualizer รหัส Python นี้สตริง Python ได้รับการจัดสรรในสแต็กและไม่ได้อยู่ในกอง
ทำไมนี้ ฉันคิดว่าพวกเขาจะคล้ายกับ Java ที่มีการจัดสรร Strings บนกอง
คำตอบ:
Visualizer นั้นไม่แสดงข้อมูลสตริงบนสแต็ก มันแสดงให้เห็นถึงการอ้างอิงในท้องถิ่นไปยังข้อมูลกองเป็นส่วนหนึ่งของสแต็คโทร นี่คล้ายกับ Java ที่String
การอ้างอิงเป็นตัวแปรโลคัลที่ชี้ไปยังString
วัตถุจริงบนฮีป
Visualizer มีอิสระที่จะทำให้การเป็นตัวแทนในลักษณะใด ๆ นั้นง่ายขึ้น มันไม่ได้หมายความว่า "สตริง Python ถูกจัดสรรบนสแต็ก" ในการนำไปใช้ของ Python
เกร็กพูดในคำตอบของเขาแล้วมีการจัดสรรสตริงไว้บนกอง
Visualizer ได้เลือกที่จะแสดงวัตถุบางอย่างในส่วน "กรอบ" ซึ่งดูเหมือนว่าฉันผิด โชคดีที่มันมีผลกระทบเพียงเล็กน้อยสำหรับบางคนที่เรียนรู้ python เนื่องจากวัตถุที่ได้รับผลกระทบ (int, string) นั้นไม่เปลี่ยนรูป ดังนั้นการให้เหตุผลเกี่ยวกับผลกระทบจึงยังคงเป็นไปได้
อย่างไรก็ตามมันให้การแสดงผลที่ผิดพลาดว่าสตริงนั้นซ้ำกันในหน่วยความจำเมื่อคุณทำสิ่งต่าง ๆ เช่น:
x = "hello"
y = x