Free

Da Gambas-it.org - Wikipedia.

La funzione Free() dealloca un'area di memoria precedentemente allocata mediante la funzione Alloc( ).

La sua sintassi è:

Free(p As Pointer)

La dimensione dello spazio di memoria, precedentemente allocata e referenziata dal Puntatore, viene liberata, resa disponibile ad altre parti del programma e per un altro uso. Finché essa non viene riutilizzata, il suo contenuto può rimanere quello precedente.

Va precisato che la funzione Free( ) libera l'area di memoria puntata dalla variabile di tipo Puntatore, ma non annulla il Puntatore medesimo. Ciò vuol dire che il Puntatore non assume il valore 0 (zero), ma viene lasciato al valore corrente, continuando così comunque a puntare alla prima cella dell'area di memoria precedentemente allocata, la quale, non essendo più però ormai riservata, non è più utile a contenere valori.

Per porre la variabile di tipo Puntatore a zero, ossia per annullarla, per far sì che non punti più ad alcuna cella di memoria, le va assegnato esplicitamente il valore zero.

Volendo, quindi, effettuare anche l'annullamento del Puntatore, si avrà mediante la funzione Free( ) la deallocazione della porzione di memoria, precedentemente riservata, ed - a seguire - l'annullamento del Puntatore medesimo con l'assegnazione del valore zero. [Nota 1]

Dim puntatore As Pointer

 puntatore = Alloc(SizeOf(gb.Byte), 16)

 ......

 Free(puntatore)
 puntatore = 0




Note

[1] Come sappiamo, un puntatore e' una variabile contenente un indirizzo di memoria. L'indirizzo di memoria 0 (zero) è un indirizzo plausibilmente valido; ma, poiché l'indirizzo di memoria 0 è riservato alla ROM, non è possibile scriverci.
Quindi, l'indirizzo di memoria 0 (zero) viene usato - per convenzione - come valore speciale per indicare che il Puntatore non punta a nulla.