Differenze tra le versioni di "Evitare la perdita di memoria chiudendo forzatamente un Form"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
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:
 
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.''
 
  ''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 (''[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.
 
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.
 
  
 
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'':
 
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'':
Riga 24: Riga 9:
 
   
 
   
 
  '''End'''
 
  '''End'''
 
 
   
 
   
 
  '''Public''' Sub Button2_Click()
 
  '''Public''' Sub Button2_Click()

Versione delle 14:40, 23 giu 2023

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.

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