Почему строки Python расположены в стеке?

Ответы:

7

Этот визуализатор не показывает строковые данные в стеке. Он показывает локальные ссылки на данные кучи как часть стека вызовов. Это очень похоже на Java, где Stringссылки - это локальные переменные, которые указывают на реальные Stringобъекты в куче.

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

Грег Хьюгилл
источник
1

В своем ответе Грег сказал, что в куче располагаются строки.

Визуализатор решил отображать некоторые объекты в «рамочной» части, что мне кажется неправильным. К счастью, это мало влияет на тех, кто изучает Python, поскольку затронутые объекты (int, string) являются неизменяемыми. Поэтому рассуждения о последствиях все еще возможны.

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

x = "hello"
y = x
Саймон Бергот
источник