Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #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
Poder: 20
rgstuamigo Va por buen camino
Cita:
Es una interesante cuestión.
Si amigo dec, precisamente es por eso mi duda,ya que son tipos de datos primitivos;
La duda surge :Que pasa si los string estan completamente llenos es decir contienen los 255 cracteres ;¿Acaso no estan ocupando memoria?
Cita:
Asi como está definido, no habría necesidad de definir un destructor ya que se trata de atributos simples.
Hola Delphius gracias por responder: 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); entonces de ahi surgio mi duda.
Espero haberme explicado...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #2  
Antiguo 07-01-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por rgstuamigo Ver Mensaje
Si amigo dec, precisamente es por eso mi duda,ya que son tipos de datos primitivos;
La duda surge :Que pasa si los string estan completamente llenos es decir contienen los 255 cracteres ;¿Acaso no estan ocupando memoria?

Hola Delphius gracias por responder: 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); entonces de ahi surgio mi duda.
Espero haberme explicado...
Saludos...
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,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
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
Poder: 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
  #4  
Antiguo 07-01-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por rgstuamigo Ver Mensaje
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 que 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....
Hola rgstuamigo,
Me parece que te estás complicando demasiado la vida. ¡El compilador lo hace todo solo!
No quisiera malinterpretar esas caritas. ¿Pretendes ser sarcástico?

El método FreeInstance es virtual. En la clase base, se llama a CleanupInstance, y luego libera toda la memoria que ocupa.

Este CleanupInstance se encarga de liberar todo los variant, strings, (para ser exacto: los longs string) y demás.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
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
Poder: 20
rgstuamigo Va por buen camino
Arrow

Cita:
Hola rgstuamigo,
Me parece que te estás complicando demasiado la vida. ¡El compilador lo hace todo solo!
No quisiera malinterpretar esas caritas. ¿Pretendes ser sarcástico?

El método FreeInstance es virtual. En la clase base, se llama a CleanupInstance, y luego libera toda la memoria que ocupa.

Este CleanupInstance se encarga de liberar todo los variant, strings, (para ser exacto: los longs string) y demás.

Saludos,
No amigo no me estoy complicando solo trataba de enteder o por ahi como dicen de meditar, pero bueno no puedo ir contra tu experiencia de programador si tu dices que no hace falta pues listo asi sera,Solo queria entender como se liberaba estos tipos de variables aunque me han quedado ciertas dudas pero bueno;Lo de las caritas no te dejes llevar por dibujitos total a veces queremos poder expresarnos mejor con caritas pero veo que siempre lo toman a mal.
Bueno como dicen los españoles: "Muchas gracias por vuestra ayuda".
Saludos.....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 07-01-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
rgstuamigo,
Como programador no llevo mucho tiempo, y faltan muchos más para que aprenda apropiadamente. Con Delphi llevo de 3 o 4 años, como programador con suerte será la mitad.

Nomás te digo lo que he leído y aprendido.

A lo que preguntas yo lo averigué de dos modos:
1. Viendo el código de dichos métodos.
2. Leyendo la ayuda, en internet, y alguno que otro manual, tutorial y sitio.

No es por ser sobrador, ni nada por el estilo, pero he aprendido la lección de que con la ayuda, viendo el código de las clases, y tomándose el tiempo para estudiar bien el tema de POO, patrones, leyendo la Cara Oculta de Delphi, a Zarco, y con lo que se mueve en clubdelphi se puede aprender mucho más y más rápido que irse de cabeza a un código sin investigarle un poquito.

Esto te lo digo porque ya me he dado muchos golpes en estos años.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
duda sobre dll romanuel C++ Builder 5 26-02-2008 20:58:52
Duda sobre DFS enrique_84 Varios 2 08-06-2006 11:53:40
constructor y destructor gustavo2 OOP 11 23-04-2004 20:23:20
Una duda sobre ADO PTW Conexión con bases de datos 1 13-04-2004 23:33:14
Sobrecargando destructor marto OOP 4 23-01-2004 20:48:25


La franja horaria es GMT +2. Ahora son las 16:54:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi