Perché le stringhe di Python sono allocate nello stack?


Risposte:


7

Quel visualizzatore non mostra i dati delle stringhe nello stack. Sta mostrando i riferimenti locali ai dati dell'heap come parte dello stack di chiamate. Questo è molto simile a Java dove i Stringriferimenti sono variabili locali che puntano a Stringoggetti reali sull'heap.

Il visualizzatore è libero di semplificare qualsiasi tipo di rappresentazione a cui tiene. Ciò non implica che "le stringhe Python sono allocate nello stack" in qualsiasi data implementazione di Python.


1

Greg ha detto nella sua risposta che le stringhe sono allocate nell'heap.

Il visualizzatore ha scelto di visualizzare alcuni oggetti nella parte "frame", il che mi sembra sbagliato. Fortunatamente, ha poco impatto per qualcuno che impara il pitone, poiché gli oggetti interessati (int, stringa) sono immutabili. Quindi è ancora possibile ragionare sugli effetti.

Tuttavia, dà la falsa impressione che le stringhe siano duplicate nella memoria quando fai cose come:

x = "hello"
y = x
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.