Ver Mensaje Individual
  #13  
Antiguo 08-01-2009
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
Cita:
Empezado por rgstuamigo
En el caso de que no lo implementara el destructor, me gustaria que me expliques entonces como se libera internamente esas variables? Ya que puede ser que algunos o muchos String esten llenos eso implica que por cada strings lleno hay un pedazo de memoria de 256 byte(ocupados)
Además de lo que ya te han explicado, creo que no está de más aclararte que un string no es un pedazo de memoria de 256 bytes. En el pascal actual, se distinguen dos tipos de strings: ShortString y long string (que ya mencionó Delphius). Los long strings corresponden al tipo de datos string, mientras que el tipo de datos ShortString corresponde al antiguo string de 256 bytes. También se entiende como short string, a los strings declarados con una longituda máxima:

Código Delphi [-]
var
  S: string[84];

Cualquier short string tiene una longitud máxima y desde su declaración, el compilador asigna tanta memoria como indique tal longitud máxima.

El tipo de datos string, que corresponde al long string, es un tipo de datos dinámico, más semejante a un apuntador o puntero. De inicio, no se asigna memoria alguna y ésta va creciendo o disminuyendo según se modifique el valor de la variable. El tamaño de un string puede ser de hasta 2GB de memoria, mucho más que los antiguos 256 bytes

A diferencia de los punteros, en un string no tenemos que asignar ni liberar memoria explícitamente -el compilador inserta llamadas a funciones que manejan la memoria según se va requiriendo.

// Saludos
Responder Con Cita