Подтвердить что ты не робот

CPython - внутри, что хранится в стеке и куче?

В С# значения типов (например: int, float и т.д.) хранятся в стеке. Параметры метода также могут быть сохранены в стеке. Однако все остальное хранится в куче. Это включает в себя списки, объекты и т.д.

Мне было интересно, делает ли CPython то же самое внутри? Что он хранит в стеке и что он кладет на кучу?

4b9b3361

Ответ 1

Все объекты Python в реализации CPython переходят в кучу. Вы можете подробно прочитать, как работает управление памятью Python здесь в документации:

Управление памятью в Python включает в себя кучу , содержащую все объекты и структуры данных Python. Управление этой частной кучей обеспечивается внутренним менеджером памяти Python. Диспетчер памяти Python имеет различные компоненты, которые имеют дело с различными аспектами управления динамическими хранилищами, такими как совместное использование, сегментация, предварительное распределение или кеширование.

Обратите внимание, что сам Python - это всего лишь язык и ничего не говорит о том, как работают внутренние элементы, такие как управление памятью; это детали, оставленные разработчикам.

Ответ 2

Время выполнения Python работает только с ссылками на объекты (все они живут в куче): что происходит в стеке Python (в качестве операндов и результатов его операций с байт-кодом) всегда ссылки (для значений, которые живут в другом месте).