Bueno, yo hice el ejercicio básico, según lo indicado por nuestro amigo y cuando entra a la función de graficar me arroja un Stack Overflow... (Y eso que la función no tiene nada)
Código Delphi
[-]
Var ArrayGrande: Array of Extended;
function GenerarRandomico: Extended;
Begin
Result:= Random(50000000);
end;
procedure graficar(vector: array of extended);
begin
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
Var i:Integer;
begin
Randomize;
SetLength(arraygrande, 2000000);
for i:=Low(arraygrande) to High(ArrayGrande) do
arraygrande[i] := GenerarRandomico;
graficar(arraygrande);
ShowMessage('Listo');
end;
hice una modificación quitando la variable que se pasa como parámetro y utilizando la global en el procedimiento graficar y aqui si funciona...
Código Delphi
[-]
procedure graficar;
begin
end;
bueno, ni que decir, pude ejecutarlo sin problemas... Yo no creo que sea un problema de memoria, insisito, pienso que hay algo mas en tu codigo que genera este error... y como te comente anteriormente, no siempre se muestra la linea que origina el error sino la linea que detecta la violación...
Pienso que deberías intentar el "Metodo de Descartes", es decir ir descartando codigo comentandolo y ejecutandolo por partes.... por ejemplo... has el ejercicio solamente con la generación de los numeros (sin imprimirlos) si vuelve a fallar puedes decir que el algoritmo que grafica no tiene nada que ver...
Cambia la formula de generación de aleatorios, maneja una distribución sencilla (como la que yo utilizo Result:= random (100)) si sigue fallando, entonces sabras que el error tampoco está por ahi... en fin...
otra alternativa, si consideras que puede ser memoria sería ayudarte de una "memoria cache" o un Buffer para generar, almacenar y leer tus datos... me refiero a que puedes guardar los datos en un archivo o BD y no en memoria... Obviamente como ejercicio, no te pido que cambies la logica de tu codigo, es tambien solo para descartar...
un saludo