Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 03-12-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por gerardus Ver Mensaje
Hay trucos, como por ejemplo después de escribir MiObjeto := TMiObjeto.Create, escribes directamente MiObjeto.Free, y entre las dos lineas escribes el código.
Hay que matizar un poco este truco. Si ponemos simplemente:

Código Delphi [-]
Objeto := TMiObjeto.Create;

/*
  Código
*/

Objeto.Free;

corremos el riesgo de pérdida de memoria. Siempre hay que proteger el códig para asegurarno que el objeto se libera ante cualquier eventualidad:

Código Delphi [-]
Objeto := TMiObjeto.Create;

try
  /*
    Código
  */
finally
  Objeto.Free;
end;

Esto garantiza que, aún en el caso de que ocurra un excepción en el código, el objeto se libera adecuadamente.

En cuanto a lo de objetos creados localmente dentro de un procedimiento, es lo mismo que con los demás objetos. Debe liberarse antes de salir del procedimiento. A diferencia de otras variables, los objetos locales no se guardan en el stack, de manera que la memoria que ocupan no se libera en automático.

// Saludos
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Algo Sobre liberar memoria look OOP 3 28-11-2007 16:05:37
Aclaracion sobre longirud de campos (???) Fita SQL 1 09-11-2005 16:17:26
aclaracion sobre DLL maruenda Varios 1 14-09-2004 22:48:07
Aclaracion sobre una pregunta anterior multisof Firebird e Interbase 2 06-11-2003 01:07:16
Liberar memoria del HDC joecool Gráficos 2 17-05-2003 00:28:51


La franja horaria es GMT +2. Ahora son las 10:53:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi