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

В C#, Типы Значения (например: интервал, плавание, и т.д.), хранятся на стеке. Параметры метода могут также быть сохранены на стеке также. Большинство все остальное, однако, хранится на "куче". Это включает Списки, объекты, и т.д.

Я задавался вопросом, CPython делает то же самое внутренне? Что это хранит на стеке, и что это ставит "кучу"?

16
задан Justin Ethier 5 March 2010 в 01:45
поделиться

2 ответа

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

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

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

20
ответ дан 30 November 2019 в 17:27
поделиться

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

12
ответ дан 30 November 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: