Differenze tra le versioni di "Evitare la perdita di memoria chiudendo forzatamente un Form"
Riga 18: | Riga 18: | ||
− | Per ovviare a questa perdita di memoria, bisognerà provvedere via codice a liberare l'area di memoria riservata agendo prima del comando ''Quit'' | + | Per ovviare a questa perdita di memoria, bisognerà provvedere via codice a liberare l'area di memoria riservata dell'oggetto, agendo mediante la funzione ''Free()'', e prima del comando ''Quit'', sull'indirizzo dell'oggetto medesimo fornito dal metodo ''.Address()'' della Classe ''Object'': |
'''Public''' Sub Button1_LostFocus() | '''Public''' Sub Button1_LostFocus() | ||
Versione delle 08:51, 24 giu 2015
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 dell'oggetto, agendo mediante la funzione Free(), e prima del comando Quit, sull'indirizzo dell'oggetto medesimo fornito dal metodo .Address() della Classe Object:
Public Sub Button1_LostFocus() Print "Button1_LostFocus" End Public Sub Button2_Click() Free(Object.Address(Button1)) Quit End