Opportunità di azzerare tutti i byte di un'area di memoria riservata seppur senza deallocarla

Da Gambas-it.org - Wikipedia.

Coma sappiamo, per poter utilizzare un'area di memoria riservata e puntata così da una variabile di tipo Puntatore, ed in particolare affinché essa possa essere passata come argomento di una funzione, oppure sia possibile scrivervi comunque dei dati con i Memory Stream, è necessario allocare mediante la funzione "Alloc()" di Gambas una quantità adeguata di memoria.


Può accadere che tale area di memoria allocata, successivamente ad un primo uso, debba essere muovamente utilizzata ma solo in parte, ossia che debba essere sovrascritta una quantità di byte inferire alla totale quantità di memoria inizialmente allocata con la predetta funzione "Alloc()" di Gambas.

In tal caso, se si va a leggere all'interno di quella memoria, qualora non sia specificato il numero di byte da leggere, può sorgere il rischio in lettura, non essendovi neppure un valore 0 (0x00 in C), di leggere oltre i nuovi dati anche i vecchi. Maggiori rischi, poi, si possono avere se tale area di memoria, contenente i vecchi dati non più utili né necessari, dovesse essere passata ad una funzione.


Per ovviare a questo possibile problema, è opportuno e buona norma, a fine utilizzo dei dati contenuti dall'area di memoria riservata, azzerare tutti i byte che la costituiscono. Effettuare, dunque una sorta di pulizia, seppur senza deallocarla (dato che dovrà essere riutilizzata).

Oltre a ciò va detto che in linea generale, se un'area di memoria allocata deve essere riutilizzata, conviene sempre azzerarla anziché deallocarla ed allocarne poi una nuova: queste ultime due operazioni infatti risultano più dispendiose rispetto all'azzeramento dell'area di memoria precedentemente riservata.


Tale azzeramento potrà avvenire sovrascrivendovi mediante la consueta modalità offerta dai Memory Stream, oppure - volendo usare una funzione esterna - mediante la funzione "memset()".