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

Da Gambas-it.org - Wikipedia.
(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...')
 
 
(7 versioni intermedie di uno stesso utente non sono mostrate)
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.''
 +
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.
  
Facciamo un semplice esempio pratico:
+
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 grafico medesimo fornito dal Metodo ".Address()" della Classe ''Object'':
'''Public''' Sub Button1_LostFocus()
+
  <FONT Color=#B22222>Free(Object.Address(Button1))</font>
 
 
  Print "Button1_LostFocus"
 
 
'''End'''
 
 
 
'''Public''' Sub Button2_Click()
 
 
   
 
   
 
   Quit
 
   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'''
 

Versione attuale delle 14:41, 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 grafico medesimo fornito dal Metodo ".Address()" della Classe Object:

 Free(Object.Address(Button1))

 Quit