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

Da Gambas-it.org - Wikipedia.
Versione del 29 ott 2016 alle 07:28 di Vuott (Discussione | contributi) (Creata pagina con "Coma sappiamo, per poter utilizzare un'area di memoria riservata, ed in particolare affinché essa possa essere passata come argomento di una funzione, oppure sia possibile sc...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Coma sappiamo, per poter utilizzare un'area di memoria riservata, 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).

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