Descrição
FreeObj [AS] – Remove da memória a instância de um objeto 🧹🧠
|
📌 Sintaxe
🔣 Parâmetros
| Par |
Nome |
Tipo |
Descrição |
Default |
Obg |
Ref |
| 01 |
oObj |
Objeto |
Objeto ADVPL cuja instância deverá ser eliminada da memória |
|
X |
|
🔁 Retorno
| Retorno |
Tipo |
Descrição |
| — |
— |
A função é procedural e não retorna valor. |
🧩 Exemplo
#INCLUDE "TOTVS.CH"
User Function FreeObj()
Local oSay01 := TSay():New( 010,005,{|| "UA:" }, GetWndDefault(),,,, .F., .F., .F., .T.,,, 550,008 )
FreeObj( oSay01 )
Return( Nil )
📸 Resultado

ℹ️ Informações adicionais
|
A função FreeObj() elimina imediatamente a instância de um objeto, mesmo que outras variáveis ainda referenciem esse mesmo objeto. Após a eliminação, qualquer variável que apontava para essa instância passa a conter NIL.
Se um objeto eliminado ainda for referenciado, ocorrerá o erro fatal: "Variable is not an object".
|
|
No uso normal, o Kernel do Application Server limpa objetos automaticamente quando eles saem de escopo ou são anulados (oObj := NIL). Porém, quando existem múltiplas referências ao mesmo objeto, somente a referência é perdida — não a instância.
Por isso, FreeObj() é recomendada especialmente para:
- Objetos não-visuais
- Classes customizadas
- Objetos de WebServices
Assim, você força a liberação imediata da memória.
|
|
Cuidado! 🛑 Eliminar objetos visuais ainda ativos (como janelas, botões, painéis etc.) pode causar:
- Access Violation
- Segment Fault
- Travamentos
- Queda do Application Server
Use com cautela.
|
Gostou? Compartilhe com seus amigos e deixe um comentário! 😎