Differenze tra le versioni di "Free"

Da Gambas-it.org - Wikipedia.
Riga 3: Riga 3:
 
La sua sintassi è:
 
La sua sintassi è:
 
  Free(p As Pointer)
 
  Free(p As Pointer)
La dimensione dello spazio di memoria, precedentemente allocata, 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.
+
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.
 
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.

Versione delle 05:02, 27 gen 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.

Dim puntatore As Pointer

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

 ......

 Free(puntatore)
 puntatore = 0