Differenze tra le versioni di "Evitare la perdita di memoria chiudendo forzatamente un Form"
Riga 15: | Riga 15: | ||
'''End''' | '''End''' | ||
− | Detto avviso sta a significare che nel chiudere il programma o comunque il ''Form'' è avvenuta una perdita di memoria (''Memory | + | Detto avviso sta a significare che nel chiudere il programma o comunque il ''Form'' è avvenuta una perdita di memoria (''[https://it.wikipedia.org/wiki/Memory_leak Memory Leak]''). L'area di memoria riservata attinente in tal caso ad un componente grafico non è stata liberata adeguatamente e resta pertanto ''riservata'', inservibile, non sovrascrivibile. |
Versione delle 08:54, 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 Leak). 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