Ver Mensaje Individual
  #1  
Antiguo 07-01-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Reputación: 20
rgstuamigo Va por buen camino
Arrow

Cita:
Internamente no se.
Cuando uno envía el mensaje Free, éste llama a Destroy. Luego este destructor invoca de forma automática a FreeInstance. Que es en última instancia el método que libera toda la memoria.

Ahora como es que hace el compilador para liberar la memoria no te sabría decir.

Tengo entendido que la liberación de memoria del tipo string ocurre de manera transparente al programador, implementando algo como un contador y en base a ese contador lleva el registro de uso de memoria, luego al final se libera. El compilador solito se encarga de liberarla. Si estoy equivocado por favor aclararmelo.

Saludos,
Entonces Habria que mirar entonces el metodo FreeInstance para ver que hace.
Tengo entendido que Borland invento este truco de poner en la posicion 0 del String, la longitud de la cadena (parece ser que esta en HEXA)es por eso que los String's comienzan en la posicion 1;
Entonces si en la posicion 0 del string esta la longitud de el string se me ocurre que podriamos sacar la direccion de Memoria de la variable String y recorrer cuanto caracteres tenga ese string liberando cada char del string,
Bueno es una idea no?? quisas es eso hace el compilador, por ahi como tu dices no es necesario.
De cualquier forma habria que hacer algunas pruebas No? o quisas alguien nos oriente mejor sobre este asunto.
Saludos....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita