Differenze tra le versioni di "Evitare la perdita di memoria chiudendo forzatamente un Form"
(5 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. | ||
− | + | 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'': | |
− | + | <FONT Color=#B22222>Free(Object.Address(Button1))</font> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Quit | Quit | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
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