Differenze tra le versioni di "Free"
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 9: | Riga 9: | ||
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. | 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. | + | 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. <SUP>[[[#Note|Nota 1]]]</sup> |
Dim puntatore As Pointer | Dim puntatore As Pointer | ||
Riga 18: | Riga 18: | ||
Free(puntatore) | Free(puntatore) | ||
puntatore = 0 | 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. <BR>Quindi, l'indirizzo di memoria 0 (zero) viene usato - per convenzione - come valore ''speciale'' per indicare che il Puntatore non punta a nulla. |
Versione attuale delle 14:55, 3 apr 2017
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.