왜 파이썬 문자열이 스택에 할당됩니까?


답변:


7

해당 비주얼 라이저가 스택에 문자열 데이터를 표시하지 않습니다. 호출 스택의 일부로 힙 데이터에 대한 로컬 참조 를 표시합니다 . 이것은 String참조가 String힙의 실제 객체 를 가리키는 로컬 변수 인 Java와 매우 유사합니다 .

이 비주얼 라이저는 모든 종류의 표현 단순화를 자유롭게 할 수 있습니다. 주어진 Python 구현에서 "Python 문자열이 스택에 할당 됨"을 의미하지는 않습니다.


1

Greg는 그의 대답에서 문자열이 힙에 할당된다고 말했습니다.

비주얼 라이저가 "프레임"부분에 일부 객체를 표시하도록 선택했습니다. 다행스럽게도 영향을받는 객체 (int, string)는 변경할 수 없으므로 파이썬을 배우는 사람에게는 거의 영향을 미치지 않습니다. 따라서 효과에 대한 추론은 여전히 ​​가능합니다.

그러나 다음과 같은 작업을 수행 할 때 문자열이 메모리에 복제된다는 잘못된 인상을줍니다.

x = "hello"
y = x
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.