Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: gaudenzi - Gennaio 30, 2015, 12:29:54 pm

Titolo: Aumentare la memoria disponibile
Inserito da: gaudenzi - Gennaio 30, 2015, 12:29:54 pm
Buongiorno a tutti.
Avrei bisogno di utilizzare in alcuni programmi di calcolo scientifico un numero di memorie di tipo extended o almeno double il più elevato possibile. Vengono utilizzate array bidimensionali sia statiche che dinamiche. Lazarus mi permette di allocare meno di un milione di memorie contro i 40/50 milioni che posso allocare senza problemi con Delphi 5. Chiedo se qualcuno conosce le istruzioni per dedicare maggiore memoria a Lazarus. Grazie.
Titolo: Re:Aumentare la memoria disponibile
Inserito da: nomorelogic - Febbraio 02, 2015, 11:06:04 am
poco fa ho fatto un test del genere

Codice: [Seleziona]
TTest = record
   a1,a2: extended
end;

ho poi dichiarato un array di 40 milioni di elementi ( x: array[1..40000000] of  TTest) e non ho avuto né errori di compilazione né problemi al lancio dell'eseguibile.
Non ho fatto prove con array dinamici.

Su che  piattaforma lavori (32/64 bit, ram, ecc..) e come dichiari gli array?
Titolo: Re:Aumentare la memoria disponibile
Inserito da: gaudenzi - Febbraio 03, 2015, 11:47:07 am
Grazie per il messaggio.

Ecco l'impostazione del codice:

unit Unit1;
{$mode objfpc}{$H+}

interface
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ComCtrls, ExtCtrls, Menus, Math;

type
  { TForm1 }
  TForm1 = class(TForm)
  seguono numerose dichiarazioni di procedure, bottoni, edit, ecc.

type
   matrices=array[-210..210,-610..610] of extended;
   matricesr=array[-1010..1010,-100..100] of extended;   

nel programma vengono usate 5 variabili di tipo matrices e 4 di tipo matricesr. Se aumento le dimensioni il programma si blocca in esecuzione.

Lavoro sotto Windows 7 con 4G di Ram a 64bit con Lazarus 1.2.6   i386-win32-win64/win64

Saluti.
Titolo: Re:Aumentare la memoria disponibile
Inserito da: nomorelogic - Febbraio 05, 2015, 09:06:41 am
ho provato in una virtualbox con win7 32bit ed un vecchio compilatore fpc: ho avuto problemi anche io
questi giorni non ho molto tempo ma appena possibile proverò anche sotto linux x64 con un compilatore recente

in effetti sembra un bug ma prima bisogna essere sicuri di usare una versione recente di fpc e controllare nel bug tracker se è già stato segnalato