![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Falta más código para poder echarle un vistazo
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
|||
|
|||
|
Hola Casimiro,
Es que el código es bastante abundante, lo he resumido. De tal modo que el problema tiene que generarse en las operaciones que se hacen al resetear la lista de punteros y el array (creo). Si me dices que con el Dispose y el SetLength es OK para gestionar bien la memoria en cada iteración, me pongo manos a la obra a ver si puedo poner más completo el código. Gracias y un saludo. |
|
#3
|
||||
|
||||
|
Es que así es casi imposible poder ayudarte, por ejemplo:
SetLength(listaArray,0); ¿cero?, entonces no ingresarás nada aquí, supongo for i:=o to n do ¿qué es 'o' y 'n'? listaPunteros := generaLista(); ni idea de lo que hace esa función etc. O sea, ni idea de por dónde ayudarte ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#4
|
|||
|
|||
|
OK (Gracias por la ayuda). Voy a responderte a algunas de tus dudas e intentaré ponerlo más claro, pero ya verás que al ahorrarme poner todo el codigo lo que hago es simplificar la exposición.
Cita:
for i:=o to n do ¿qué es 'o' y 'n'? perdón '0' y 'n', no es relevante, simplemente el proceso se repite. en el proceso real i es un año de una lista de [añoInicio..añoFin]. listaPunteros := generaLista(T); ni idea de lo que hace esa función etc. a partir de una tabla 'T': 3x14, cada celda tiene un valor de probabilidad 'p'. Bien pues la función genera todas las combinaciones de combinar 1 columna de las 14 filas. Lo importante es que devuelve 3 elevado a 14 elementos enlazados en una lista de punteros con esos valores de probabilidad. Luego esa lista es ordenada, para tener toda la lista de valores de probabilidad ordenados de mayor a menor, por último se pasa de la lista de punteros a array (con la susodicha función lista2Array()). No sé si comentar el código mucho mejor... pero creo que poniendo todo el tocho, al ser un tema de cálculo, va a ser más dificil de entender. La clave está en ver como liberar la memoria en la lista de punteros y array en cada iteración... Que me da la sensación que aunque haga el 'Dispose' a la lista de punteros, el recolector de memoria o gestor no hace uso de la memoria (no sé hasta cuando).. Saludos. Última edición por Bauhaus1975 fecha: 22-12-2010 a las 19:04:47. |
|
#5
|
||||
|
||||
|
Entonces se supone que redimensionas listaArray en otro sitio, no?
SetLength(listaArray,0);
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#6
|
|||
|
|||
|
Cita:
se recorre la lista de punteros y se van añadiendo, en ese proceso va creciendo, y por tanto redimensionándose. Luego a comienzo de la siguiente iteración hay que resetear las listas, tanto listaArray como listaPunteros.
|
|
#7
|
||||
|
||||
|
Y si sabes cuántos valores vas a poner en el array, ¿por qué no lo haces de primera hora?, ejemplo: SetLength(listaArray,16384); y luego liberas la memoria.
No sé cómo lo hace delphi en estos casos, pero si tienes un array de n elementos y lo vas a redimensionar... puede que simplemente lo aumente de tamaño o puede ser que cree uno nuevo con el nuevo tamaño, pase los valores del viejo al nuevo, borre el viejo y ya tienes todo en el nuevo. En este último caso todo el proceso será mucho más lento que en el primer caso y necesitarás el doble de memoria, que lo enlentecerá mucho más todavía.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Problema con punteros | waremovil | C++ Builder | 2 | 18-08-2007 18:47:19 |
| Liberación de memoria de punteros Data de un Tree. | afxe | Varios | 5 | 20-06-2007 17:12:34 |
| Memoria virtual para grandes matrices | JF Sebastian | OOP | 2 | 30-01-2007 20:11:41 |
| Problema con matrices que no logro resolver | galmacland | Varios | 11 | 20-06-2006 19:03:45 |
| sobre punteros... y memoria ¿Como perder su valor, sin hacerlo? | Delphius | Varios | 8 | 19-04-2006 10:55:06 |
|