Class String: allocazione spazio in memoria

Ogni tanto, rileggendo il Reference, mi accorgo di alcune nuove funzioni aggiunte alle classi.

E' questo il caso dell'oggetto String: finalmente hanno aggiunto la funzione string.reserve(size).

A cosa serve? Ad impedire il crash di Arduino per esaurimento di memoria operativa SRAM, una cosa frequente con l'uso di String e per la mancanza di un algoritmo di garbage collection.

Un problema questo che limitava l'uso di String (che ha delle comodissime funzioni) a vantaggio del semplice vettore stringa.

La stessa cosa si poteva fare semplicemente inizializzando l'oggetto String con una costante stringa contenente, ad esempio, degli spazi, ma ora la cosa è decisamente più elegante e funzionale.

http://arduino.cc/en/Reference/StringReserve

Grazie per la info.
Probabilmente solo dalla 1.5.7 o ci sarà anche sulla 1.0.x ?

E' già presente nel core 1.0.5. Da quando non so, ma ho controllato ora nei file WString.cpp e WString.h e c'è il metodo reserve, che altro non fa che chiamare realloc.

Personalmente trovo assurdo voler usare funzioni per la memoria dinamica su una piccola mcu 8 bit con solo 2k di ram, molto meglio lavorare esclusivamente con vettori di lunghezza fissa preassegnata, ovvero in C ANSI e non in C++, non smetterò mai di dire che il C++ è il male assoluto sulle piccole mcu :grin:

La classe String è nata per i niubbi, molto più facile fornire loro una classe che fargli imparare i fondamenti del linguaggio ;)

Beh, il C++ magari verrà comodo su Arduino Zero con STM e un pò di ram.

leo72: La classe String è nata per i niubbi,

Stamattina sul giornale c'è scritto che il governo ha deciso di abrogare le leggi della termodinamica per aumentare il risparmio energetico e i niubbi per ridurre i costi di istruzione del personale :grin:

In fondo a codesto articolo c'è anche scritto che da settembre la CPU che verrà utilizzata nelle scuole per imparare la programmazione sarà la 4004 ;) Chi non ce la fa neanche con quella, può darsi ad altri corsi di studio :stuck_out_tongue_closed_eyes:

Stamattina sul giornale c'è scritto che il governo ha deciso di abrogare le leggi della termodinamica per aumentare il risparmio energetico...

Berlusconi ha commentato il provvedimento: "La colpa non è delle leggi, ma dei giuidici che le applicano" XD XD XD

Stiamo un pò OT ]:)

Molte volte la String viene usata per "stampare" del testo, io trovai questa lib [u]molto più meglio[/u] :grin: http://arduiniana.org/libraries/pstring/

nid69ita: Stiamo un pò OT ]:)

Autorizzo io... ;)

.reserve è presente dall'IDE 1.0. :grin: