Pages: [1]   Go Down
Author Topic: Memoria RAM  (Read 1041 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Qualcuno conosce un comando o una libreria per liberare la memoria RAM allocata all'interno dell'arduino alla fine dell'esecuzione del programma?
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22759
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La richiesta non è chiara. Un programma non viene mai terminato ma eseguito dal microcontrollore (non da Arduino!) in loop infinito.
Puoi usare la funzione malloc() per far sì che il programma rilasci la memoria allocata per le variabili locali ad una funzione secondaria.
Logged


0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ehm la funzione è la free()
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21590
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Arduino non ha un sistema operativo multitasking percui termini programmi e serve liberare la memoria prima occuparta.
Se hai problemi di memoria Ram ci sono alcune strategie per risparmiare:
* prendere un ATmega piú grande ( un ATmega 1280 o 2560 al posto del 328)
* mettere delle costanti nella flash ( funzione progmem http://www.arduino.cc/en/Reference/PROGMEM)
* memorizzare dati nella EEprom ( libreria EEprom)
* ottimizzare il codice da usare meno variabili

Ciao Uwe
 
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22759
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@lesto:
sì, malloc serve a "prenotare temporaneamente" la memoria di una variabile, che poi può essere liberata da free.
Logged


0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nikm666 ha chiesto come "liberare la memoria RAM", che a runtime si fa con le free(), a termine programma invece dovrebbe avvenire completamente da sola a meno che tu non abbia usato la malloc, in quel caso le zone mallocate bisogna liberarle a mano con la free.


nikm666 la tua è comunque una richiesta strana, anche se la RAM vien liberata, il suo contenuto non viene riscritto al volo ma solo quando ce ne è bisogno: infatti è per questo che in C bisogna sempre ricordarsi di inizializzare le variabili, altrimenti ti ritrovi a lavorare con vecchi valori a caso, il famoso garbage(spazzatura).

In oltre quando si toglie la alimentazione la RAM viene completamente cancellata data la sua struttura, altrimenti probabilmente non si userebbero gli hard disk smiley
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: [1]   Go Up
Jump to: