Evitare la perdita di memoria chiudendo forzatamente un Form

Da Gambas-it.org - Wikipedia.
Versione del 24 giu 2015 alle 07:48 di Vuott (Discussione | contributi) (Creata pagina con 'In talune particolari circostanze può accadere che utilizzando, per chiudere un ''Form'' (o comunque il programma), l'istruzione ''Quit'' si abbia in console questo tipo di m...')

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

In talune particolari circostanze può accadere che utilizzando, per chiudere un Form (o comunque il programma), l'istruzione Quit si abbia in console questo tipo di messaggio:

gbx3: warning: 1 allocation(s) non freed.

Facciamo un semplice esempio pratico:

Public Sub Button1_LostFocus()
 
 Print "Button1_LostFocus"

End


Public Sub Button2_Click()

 Quit

End

Detto avviso sta a significare che nel chiudere il programma o comunque il Form è avvenuta una perdita di memoria (Memory Leaks). L'area di memoria riservata attinente in tal caso ad un componente grafico non è stata liberata adeguatamente e resta pertanto riservata, inservibile, non sovrascrivibile.


Per ovviare a questa perdita di memoria, bisognerà provvedere via codice a liberare l'area di memoria riservata agendo prima del comando Quit sul suo indirizzo fornito dal metodo .Address() della Classe Object mediante la funzione Free():

 Public Sub Button1_LostFocus()
 
Print "Button1_LostFocus"

End


Public Sub Button2_Click()

 Free(Object.Address(Button1))

 Quit

End