Ver Mensaje Individual
  #4  
Antiguo 04-01-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Me gustaría aclarar un par de puntos menores.

1. No es una cuestión de una diferencia entre tipo y clase. Una clase es un tipo de datos, eso sí, con todas las características que menciona Lepe.

2. No es que un registro siempre consuma memoria. La memoria se libera automáticamente una vez que sale de alcance. Por ejemplo, registros declarados dentro de una función, se liberan al término de ésta.

3. En cierta forma, lo mismo sucede con los objetos. La variable que contiene la referencia siempre existirá hasta que salga de alcance. Recordemos que una variable de tipo clase no es sino un puntero. Lo que puede liberarse explícitamente es la memoria a la que apunta. Igual podríamos hacer con un registro si utilizamos un puntero y asignamos memoria:

Código Delphi [-]
type
  TMiRecord = record
    ...
  end;

var
  pr: TMiRecord;

begin
  New(pr);

  ...

  {
    Aquí liberamos memoria. La variable pr aun existe
    pero ya no a lo que apunta
  }
  Dispose(pr);
end;

// Saludos
Responder Con Cita