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


Ответы:


7

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

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


1

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

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

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

x = "hello"
y = x
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.