Variabili globali/,locali e utilizzo memoria
Salve a tutti.
Questo post non è di risoluzione di problemi, ma di chiarimento sul funzionamento di Arduino e nello specifico di come gestisce la memoria.
Ho uno sketch più o meno complesso che al sui interno utilizza variabili globali e locali.
In fase di compilazione mi da questo messaggio di informazione finale:
Lo sketch usa 42378 byte (16%) dello spazio disponibile per i programmi. Il massimo è 253952 byte.
Le variabili globali usano 6039 byte (73%) di memoria dinamica, lasciando altri 2153 byte liberi per le variabili locali. Il massimo è 8192 byte.
Riguardo alla gestione della memoria volevo chiedere questo:
- una variabile locale inserita in una funzione alloca uno spazio in memoria X per contenere il valore della stessa.
1) Al termine della funzione la parte d memoria che contiene la variabile in questione viene deallocata oppure resta li?
2) Ad una successiva chiamata della medesima funzione, la variabile riutilizza lo spazio di memoria precedentemente allocato oppure ne aggiunge una nuova allocazione?
Chiedo questo perché dal messaggio ho visto che mi rimane poca memoria libera per le variabili locali e se queste ogni volta che vengono utilizzate "sfruttano" sempre più memoria, arriverei dopo N iterazioni a saturare la memoria disponibile (sempre se la cosa funziona così). perché se no avevo pensato di dichiare alcune variabili locali come variabili Globali che teoricamente dovrebbero allocare uno spazio definito di memoria.
Grazie in anticipo a chi mi risponderà
Questo post non è di risoluzione di problemi, ma di chiarimento sul funzionamento di Arduino e nello specifico di come gestisce la memoria.
Ho uno sketch più o meno complesso che al sui interno utilizza variabili globali e locali.
In fase di compilazione mi da questo messaggio di informazione finale:
Lo sketch usa 42378 byte (16%) dello spazio disponibile per i programmi. Il massimo è 253952 byte.
Le variabili globali usano 6039 byte (73%) di memoria dinamica, lasciando altri 2153 byte liberi per le variabili locali. Il massimo è 8192 byte.
Riguardo alla gestione della memoria volevo chiedere questo:
- una variabile locale inserita in una funzione alloca uno spazio in memoria X per contenere il valore della stessa.
1) Al termine della funzione la parte d memoria che contiene la variabile in questione viene deallocata oppure resta li?
2) Ad una successiva chiamata della medesima funzione, la variabile riutilizza lo spazio di memoria precedentemente allocato oppure ne aggiunge una nuova allocazione?
Chiedo questo perché dal messaggio ho visto che mi rimane poca memoria libera per le variabili locali e se queste ogni volta che vengono utilizzate "sfruttano" sempre più memoria, arriverei dopo N iterazioni a saturare la memoria disponibile (sempre se la cosa funziona così). perché se no avevo pensato di dichiare alcune variabili locali come variabili Globali che teoricamente dovrebbero allocare uno spazio definito di memoria.
Grazie in anticipo a chi mi risponderà