Ver Mensaje Individual
  #3  
Antiguo 26-03-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.549
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En realidad ambos son iguales en cuanto a la liberación de memoria, ya que la instrucción que realmente libera la memoria es el FREE. La asignación a nil, simplemente asigna ese valor a la variable que apunta al form, pero en ese momento la memoria ya se ha liberado(*).

(*)Recuerda, que el sistema no libera la memoria inmediatamente, así que si miras la memoria que consume tu programa, tal vez después de hacer el FREE, la cantidad de memoria libre siga siendo la misma que antes de hacerlo; Es normal, pues lo que hace el sistema es "marcar" determinada memoria, como que está "libre", pero no la libera en ese momento de forma explícita. Queda marcada y en el momento que el sistema la necesita "recopila" esas zonas "marcadas para liberar" y las "libera" todas al mismo tiempo.

Tal como comenta [olbeup], puedes usar un FreeAndNil, que lo que hace es hacer el FREE y la asignación en una misma instrucción(línea).

La asignación a NIL, aunque no es obligatoria, si es recomendable si posteriormente utilizas instrucciones como esta:

Código Delphi [-]
  if Assigned(miForm)...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita