Perché le stringhe Python sono allocate nello stack?

9

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.

    
posta rdasxy 27.02.2012 - 20:29
fonte

2 risposte

7

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.

    
risposta data 28.02.2012 - 00:55
fonte
1

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
    
risposta data 10.10.2012 - 11:23
fonte

Leggi altre domande sui tag