Ver Mensaje Individual
  #1  
Antiguo 22-12-2010
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Reputación: 19
Bauhaus1975 Va por buen camino
Thumbs down Problema liberando memoria: punteros y matrices

Muy buenas de nuevo.

Resulta que tengo una sección de código que me está dando quebraderos de cabeza pues al ejecutarse me da un 'out of memory'.

Voy a poner de manera resumida el código que afecta. Se trata de un proceso que para realizar cálculos estadísticos genera varios millones de elementos, y ordena. Esto de manera reiterada, el problema es que en cada iteración, seguramente, no sé liberar bien la memoria.

Este es el código en cuestión:

Código Delphi [-]
var
listaPunteros : puntero of TRegistro;
listaArray : array of TRegistro;
begin
for i:=o to n do
    SetLength(listaArray,0);
    Dispose(listaPunteros);
    listaPunteros := nil;
    listaPunteros := generaLista(); // 10 millones de elementos aprox. son devueltos
    ordenarLista_QuickSort(listaPunteros);
    // Aqui pasamos al array que nos sirve luego para otras partes del proyecto.
    listaArray:= lista2Array(listaPunteros);
{
[..] A partir de aqui se hacen unos cálculos (en listaArray) para evaluar unos valores estadisticos,
 y vuelta a empezar en el bucle principal.
>> Al realizar 5 iteraciones ya está el sistema 'petado'
}
end;
Bien, el por qué de hacerlo así con punteros de manera intermedia, es porque los tiempos de ejecución de este proceso en particular son muy diferentes a trabajar unicamente con arrays.

¿Podéis echarme una mano?
Gracias y un saludo.

Última edición por rgstuamigo fecha: 22-12-2010 a las 23:13:53. Razón: Estética en el código
Responder Con Cita