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:
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