Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 21/12/2007
djanp djanp is offline
Miembro
 
Join Date: Nov 2007
Posts: 17
Poder: 0
djanp Va por buen camino
como aumenta la memoria asignada a delphi

no se si esta bien dicho, pero cada 2x3 me da error de memoria o pila desbordada y tal, supongo q es por haber ejecutado varias veces mi programa y se queda sin memoria, aunq no deberia ser asi, pero bueno alguien sabe como se sube la memoria asignada a pila y demas cosas??
Reply With Quote
  #2  
Old 21/12/2007
Delphius's Avatar
[Delphius] Delphius is offline
Miembro Premium
 
Join Date: Jul 2004
Location: Salta, Argentina
Posts: 5,582
Poder: 28
Delphius Va camino a la fama
Hola djanp,
Asegúrate de que estás liberando la memoria de todo objeto que creas.
Y si estás usando estructuras dinámicas en las que se empleen punteros. Por ejemplo:

Código Delphi [-]
PNodo = ^TNodo;
TNodo = record
   Valor: integer;
   Sig: PNodo;
end;

Recuerda que tu debes realizar Dispose. Por cada New que hayas realizado, un Dispose debe ser efectuado cuando ya no se necesita.

Delphi libera la memoria que emplea. Ese es el comportamiento predeterminado... Pero si haz estado creando objetos y no le haz estado asignando un "dueño" para que éste se encargue de liberarlo de la memoria, la obligación recae en ti en ir liberandolos.

Por empezar se me ocurre que empieces a analizar si algo queda por ahi sin liberar.
A falta de muestra de código no te sabría decir que y/o donde está fallando.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Last edited by Delphius : 21/12/2007 at 13:20.
Reply With Quote
  #3  
Old 21/12/2007
djanp djanp is offline
Miembro
 
Join Date: Nov 2007
Posts: 17
Poder: 0
djanp Va por buen camino
cierto q no he liberado memoria de lo que creo, algo q tendre q ir añadiendo, pero no uso punteros, solo forms con sus botoncitos y tal
tal vez se quede en memoria las 30 tablas q abro y no se borre al cerrar la aplicacion
Reply With Quote
  #4  
Old 21/12/2007
Delphius's Avatar
[Delphius] Delphius is offline
Miembro Premium
 
Join Date: Jul 2004
Location: Salta, Argentina
Posts: 5,582
Poder: 28
Delphius Va camino a la fama
¿Concretamente que es lo que estás creando?
¿Por tablas te refieres a TTables?

Si por las tablas y/o cualquier otro componente que se emplee para el acceso a base de datos no creo que sea el problema. Tengo entendido, corrijanme si me equivoco, que Delphi una vez que se cierra la aplición se cierran todas las secciones que hayan abiertas, por lo que se cierran todas las tablas, las Querys, los dataset, etc...

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Reply With Quote
  #5  
Old 21/12/2007
djanp djanp is offline
Miembro
 
Join Date: Nov 2007
Posts: 17
Poder: 0
djanp Va por buen camino
si a ttables , datasources y demas me refiero,
tal vez sea q tengo q hacer en cada form.:

procedure TFclientes.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;



pero si cierro la aplicacion de golpe no haria falta hacer esto no??
Reply With Quote
  #6  
Old 21/12/2007
Delphius's Avatar
[Delphius] Delphius is offline
Miembro Premium
 
Join Date: Jul 2004
Location: Salta, Argentina
Posts: 5,582
Poder: 28
Delphius Va camino a la fama
djanp,
Close no libera a menos que lo indiques. Para ello es el valor caFree. Por defecto es caHide (en SDI). Por lo que cuando tu presionas en la X, a menos que cambies el valor a caFree lo único que hará es ocultarse la forma y todo lo que ésta contenga seguirá estando en memoria.

Si estas creando objetos en runtime conviene forzar la liberación de memoria. Delphi libera la memoria disponible cuando se cierra la aplicación... y eso funcionará siempre que todo lo que creas tiene dueño. Si no lo tiene... tu mismo deberás programar cuando liberarlo.

El hecho de que tengas caFree no te garantiza que toda la memoria se liberará.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Reply With Quote
  #7  
Old 21/12/2007
Lepe's Avatar
[Lepe] Lepe is offline
Miembro Premium
 
Join Date: May 2003
Posts: 7,424
Poder: 31
Lepe Va por buen camino
Dicho de otra Forma:

Si tienes puesto caFree en el FormClose, dicho form se libera de memoria RAM, y todos los componentes que sea dueño.

Si los TTables los tienes puestos en ese Form en tiempo de diseño, también se liberan al cerrar el Form.

Si en tu código haces: tabla1 := TTable.Create(nil); ese no se libera, tienes que liberarlo tú con tabla1.Free;

Si en tu código usas: tabla1 := TTable.Create(Self); o bien tabla1 := TTable.Create(FClientes); entonces sí se libera automáticamente.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Reply With Quote
  #8  
Old 21/12/2007
jachguate's Avatar
jachguate jachguate is offline
Miembro
 
Join Date: May 2003
Location: Guatemala
Posts: 6,254
Poder: 30
jachguate Va por buen camino
Quote:
Originally Posted by djanp View Post
no se si esta bien dicho, pero cada 2x3 me da error de memoria o pila desbordada y tal, supongo q es por haber ejecutado varias veces mi programa y se queda sin memoria, aunq no deberia ser asi, pero bueno alguien sabe como se sube la memoria asignada a pila y demas cosas??
Si el error es de pila desbordada (stack overflow) y no de No hay memoria disponible (Memory not available), muy probablemente el problema está en una llamada recursiva, directa o indirecta, que está ejecutándose muchísimas veces.

En turbo pascal, podías cambiar el tamaño de la pila con la directiva {$M StackSize, MinHeapSize, MaxHeapSize} del compilador. Nunca he tenido necesidad de hacer esto en Delphi (10 años usándolo) por lo que ignoro si el compilador soporta la directiva.

Como ya he dicho... lo mas seguro es que haya una llamada recursiva infinita.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Reply With Quote
  #9  
Old 22/12/2007
Lepe's Avatar
[Lepe] Lepe is offline
Miembro Premium
 
Join Date: May 2003
Posts: 7,424
Poder: 31
Lepe Va por buen camino
Quote:
Originally Posted by jachguate
Nunca he tenido necesidad de hacer esto en Delphi (10 años usándolo) por lo que ignoro si el compilador soporta la directiva.
En projects -> options está la cajita para indicar el tamaño de pila (call Stack).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
La falta de sueño aumenta los peligros para el corazón Delphius La Taberna 8 27/06/2007 09:24
GMail aumenta el espacio a 2 GB marcoszorrilla Noticias 3 02/04/2005 18:11
gestion de memoria delphi joni Varios 1 17/03/2005 21:03
manejo de la memoria en delphi jac000y Varios 7 03/02/2004 15:03
Como saber que letra tiene asignada la unidad de CD pampitasnowman Varios 1 22/09/2003 19:29


All times are GMT +2. The time now is 02:16.


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