2010-03-01 5 views
16

C#에서는 값 유형 (예 : int, float 등)이 스택에 저장됩니다. 메서드 매개 변수도 스택에 저장할 수 있습니다. 그러나 그 밖의 대부분은 힙에 저장됩니다. 이것은리스트, 객체 등을 포함합니다.CPython - 내부적으로 스택 및 힙에 저장되는 항목은 무엇입니까?

CPython은 내부적으로 동일한 것을 수행합니까? 스택에 무엇이 저장되며 스택에 무엇이 저장됩니까? (피연산자와 바이트 코드 조작의 결과로) (다른 곳에서 살고 값) 참조 항상 파이썬의 스택에 어떤 일이 일어나는지 :

+0

나는 "다른 모든 것들은 ** heap **에 저장되어 있습니다."라고 가정합니다. * –

+8

"파이썬"이 아닌 "CPython"이라고했을 것입니다. 파이썬은 언어입니다. 구현시 Python이 요구하는 의미를 존중하는 한 객체를 저장해야한다는 의견이 없습니다. CPython은 대부분의 사람들이 사용하는 C로 작성된 Python을 구현 한 것입니다. 아래의 John Feminella와 Alex Martelli의 답변은 모두 CPython과 관련이 있습니다. PyPy, Jython 및 IronPython에는 개체를 저장할 위치에 대한 자체 의견이 있습니다. 슬프게도 나는 그것에 대해 아무것도 모른다. –

+0

@BlueRaja - 고마워요, 잘 잡으세요. –

답변

20

CPython 구현의 모든 Python 객체는 힙으로 이동합니다. 파이썬의 메모리 관리는 문서에 here 작동하는 방식을 자세히 읽을 수 있습니다 파이썬에서

메모리 관리는 모든 파이썬 객체 및 데이터 구조를 포함하는 개인 힙 을 포함한다.이 개인 힙의 관리는 파이썬 메모리 관리자에 의해 내부적으로 보장됩니다. 파이썬 메모리 관리자는 공유, 세분화, 사전 할당 또는 캐싱과 같은 다양한 동적 스토리지 관리 측면을 다루는 다양한 구성 요소를 가지고 있습니다.

파이썬 자체는 단지 언어 일 뿐이며 메모리 관리와 같은 내부 구조가 어떻게 작동해야하는지에 대해서는 언급하지 않습니다. 이것은 구현 자에게 남겨진 세부 사항입니다.

11

파이썬의 런타임은 (모두가 힙에 살고있는) 객체에 대한 참조로 다루고있다.

+3

'파이썬의 스택은 항상 참조 사항입니까? '에 대해 더 설명하거나 참조를 제공하겠습니까? – laike9m

관련 문제