Differenze tra le versioni di "Evitare la perdita di memoria chiudendo forzatamente un Form"
Riga 28: | Riga 28: | ||
'''Public''' Sub Button2_Click() | '''Public''' Sub Button2_Click() | ||
− | Free(Object.Address(Button1)) | + | <FONT Color=#B22222>Free(Object.Address(Button1))</font> |
Quit | Quit | ||
'''End''' | '''End''' |
Versione delle 08:52, 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