Secondo questo visualizzatore di codice Python , le stringhe di Python sono allocate sul stack e non sullo heap.
Perché è questo? Ho pensato che sarebbero stati simili a Java dove le stringhe sono allocate sullo heap.
Secondo questo visualizzatore di codice Python , le stringhe di Python sono allocate sul stack e non sullo heap.
Perché è questo? Ho pensato che sarebbero stati simili a Java dove le stringhe sono allocate sullo heap.
Questo visualizzatore non mostra i dati di stringa nello stack. Mostra i riferimenti locali ai dati dell'heap come parte dello stack di chiamate. Questo è molto simile a Java dove String
riferimenti sono variabili locali che puntano agli oggetti String
effettivi sull'heap.
Il visualizzatore è libero di apportare qualsiasi tipo di semplificazione della rappresentazione a cui tenga. Non implica che "le stringhe di Python siano allocate nello stack" in ogni specifica implementazione di Python.
Greg ha detto nella sua risposta che le stringhe sono allocate nello heap.
Il visualizzatore ha scelto di visualizzare alcuni oggetti nella parte "frame", cosa che mi sembra sbagliata. Fortunatamente, ha poco impatto per qualcuno che sta imparando Python, dal momento che gli oggetti interessati (int, string) sono immutabili. Quindi ragionare sugli effetti è ancora possibile.
Tuttavia dà la falsa impressione che le stringhe siano duplicate in memoria quando fai cose come:
x = "hello"
y = x