Newsgroup: it.comp.lang.c++
Titolo: Memoria

Salve a tutti. Sto aiutando un amico a preparare la tesi e per questo sto
scrivendo un programma che deve gestire matrici enormementi grandi, sono
matrici che non di rado hanno anche 300.000 elementi e purtroppo devono
essere di tipo double. Il problema è che oltre un certo numero di elementi
ho un messaggio di errore che ( ovviamente ) mi dice memoria insufficiente.
Questo succede sul mio pc nonostante abbia 500 MB di RAM. Avevo pensato di
risolvere il problema appoggiandomi all'uso dei file, però vorrei scrivere
una funzioni che controlli quanta memoria ram è disponobile nel pc e ne
allochi una parte per poter gestire un maggior numero di matrici in memoria
centrale. Saprestedirmi come fare ? Grazie mille a tutti.
Mimmo

 ho un messaggio di errore che ( ovviamente ) mi dice memoria insufficiente.
Perche' "ovviamente"?  Mai sentito parlare di 'memoria virtuale'?
Procurati un compilatore decente!
mlonews@mlinux 11 $ cat foo.cxx
#include <iostream>
#include <cstdlib>
int main() {
  const size_t uffa(1000000);
  double uno[uffa];
  double *due = new double[uffa];
  for (unsigned int i = 0;  i < uffa;  ++i) {
    uno[i] = static_cast<double>(rand())/RAND_MAX;
    due[i] = i;
  }
  std::cout << uno[uffa-1] << ' ' << due[uffa-1] << std::endl;
  delete [] due;
  return 0;
}
mlonews@mlinux 12 $ g++ -ansi -pedantic -Wall -o foo foo.cxx && ./foo
0.199935 999999
mlonews@mlinux 13 $
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it

 Questo succede sul mio pc nonostante abbia 500 MB di RAM.
Come allochi la matrice?
Usi new oppure le allochi sullo stack:
    double m[5484][548]
?
Non è che la matrice è sparsa (ossia molti elementi sono zero)?
In ogni caso, visto che devi fare un uso di matrici non banale, ti consiglio
ti scaricarti una libreria che si occupi di tali cose
(ad esempio Blitz++)
Saluti  Manlio Perillo


wrote:

la risposta é legata al tipo di sistema operativo che vuoi utilizzare.
Posta la domanda nel gruppo adatto
ciao
Antonio

 ha scritto nel messaggio
news:Oy%l8.8639$S52.2...@news2.tin.it...

Ciao. Grazie per la risposta. Purtroppo non sono matrici sparse altrimenti
avrei ovviato al problema. Comunque uso new per allocarle puoi darmi altri
xonsigli ? Grazie.

 a écrit dans le message news:
e7Zl8.46979$1S3.1...@twister1.libero.it...

Se lavori in ambiente windows ti consiglio di scaricare il
compilatore+ambiente di sviluppo integrato DEVC++ da qua:
http://www.bloodshed.net/devcpp.html
Ricompila e rilinka il tuo progetto con questo per vedere se i tuoi problemi
provengono dal tuo attuale compilatore (a proposito con quale compilatore
stai avendo problemi di memoria?).
In caso stai lavorando in ambiente linux non penso che dovresti avere
problemi.
Nel caso di Mac non so aiutarti.
Maurus


Che compilatore e ambiente stai utilizzando?
Il tuo č un problema legato alla implementazione
che stai utilizzando, quindi questo non č il newsgroup adatto per
discuterne.
Saluti  Manlio Perillo


Ciao Uso il compilatore della borland 5.02 e il mio applicativo deve girare
sotto dos Ciao e grazie
Mimmo