Ver Mensaje Individual
  #6  
Antiguo 26-09-2008
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 22
gatosoft Va camino a la fama
Hey hey... amigos no olviden algo importante...!!!

LIBERAR LOS RECURSOS

Oye Drago26... cuando termines de utilizar tu array haz lo siguiente:

Código Delphi [-]
  ArrayDinamico := nil;

Bueno esta es una de las pocas ocasiones en las que se libera memoria de este modo... el otro caso que conozco es en los timage

Código Delphi [-]
  Image1.Picture := nil;

No se si alguien conozca otro caso.

Solo por curiosidad:

En general para liberar memoria de tus objetos debes hacer

Código Delphi [-]
  Objeto.free;

Yo siempre he considerado que el caso de Image1.Picture:= nil es un Bug ... por que dentro de la lógica, lo que haces cuando apuntas una variable tipo Objeto o Tipo Puntero (que al final son lo mismo), es perder la direccion de memoria donde está alojado tu objeto, mas no liberandolo

Entonces, es correcto

Objeto.Free;
Objeto:=nil;

Incorrecto:

Objeto:=nil;
Objeto.Free;

Por que en este segundo caso pierdes la direccion de memoria y cuando vayas a hacer Object.Free no va a encontrar un objeto que liberar...

Para el caso de trabajar directamente con apuntadores... debes utilizar metodos de separacion y liberacion de memoria (como New y Dispose) y al final si haces Puntero.=nil;

Saludo,
Responder Con Cita