[C con Clase] Memoria RAM y matrices

Daniel Dagnino ddagnino en gmail.com
Vie Ene 12 12:41:09 CET 2007


Hola a todos,
antes de nada agradezco las respuestas desinteresadas que me dieron a una
pregunta anterior y que me a ido muy bien.
Bueno, mi pregunta ahora es respecto como se las apaña el ordenador para
almacenar todos lo que le digo dado que me he creado el programa de abajo
trabaja con una matriz de 12000*12000 floats que viene a ser más de un giga
de información y mi ordenador tiene menos que eso así que mi pregunta es,
¿Como es eso posible que este programa funcione (pq funciona)?.

El programa únicamente crea la matriz, le asigna los valores 1.0, luego se
los cambia por 2.0 y también da el tamaño de la matriz y da 6 valores para
confirmar que realmete cambia el valor 1.0 por 2.0.

#include <iostream>
using namespace std;

void funcion(double **B, int n, int m);

int main(){
   int i,n,m;
   double **A;

   n=13000; m=13000;
   A=new double *[n];
   for (i=0;i<n;i++){A[i]=new double [m];}

   for(int i=0;i<n;i++){
   for(int j=0;j<m;j++){
           A[i][j]=1.0;
           }
           }

   funcion(A,n,m);
   printf("A =  %f  %f  %f \n",A[0][0], A[0][1], A[0][2]);
   printf("     %f  %f  %f \n",A[n-1][m-3], A[n-1][m-2], A[n-1][m-1]);

   cout<<"Tamaño de A = "<<endl;
   cout<<"n*m(ints)*8(bytes)+n(punt)*8(punt int)+8(punt de punt int) =
"<<8*(1+n+n*m)<<" bytes\n";

   for (i=0;i<n;i++){delete[] A[i];}
   delete[] A;
   getchar();
}

void funcion(double **B, int n, int m){
     for(int i=0;i<n;i++){
     for(int j=0;j<m;j++){
                  B[i][j]=2.0;
                  }
                  }
}



Un saludo y gracias.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070112/92aba9db/attachment.html>


Más información sobre la lista de distribución Cconclase