[C con Clase] tamaño de un array

José Luis Torre joseluistorrehernandez en gmail.com
Mar Abr 21 12:14:59 CEST 2015


Hola:

La pregunta que planteas es difícil ya que la respuesta depende de muchos
factores, uno de los más importantes es el sistema operativo utilizado y la
gestión que hace de la memoria.


Para que te hagas una idea, una cosa es la memoria real del ordenador y
otra es lo que se llama memoria virtual, que no es más que la forma en que
el sistema operativo utiliza la memoria real del ordenador.

La memoria virtual es mucho mayor que la memoria real y depende del sistema
de direccionamiento de memoria utilizado, es decir, el un número que es la
mayor posición de memoria direccionable (aunque dicha dirección de memoria
no exista)

Ten en cuenta que la memoria se comparte entre todos los procesos que se
están ejecutando en el ordenador, y dos procesos pueden estar referenciando
la misma posición de memoria en instantes de tiempo diferentes.

Recuerda que cuando la memoria real está ocupada (al llegar a un límite) el
sistema operativo puede copiar parte de la memoria a disco, con el fin de
poder asignar dicha memoria a otros procesos y poder seguir funcionando
correctamente.

Creo que con las ideas anteriores te darás cuenta que no es fácil saber
cual es el máximo tamaño de array a utilizar, pero, con unas pocas pruebas,
puedes comprobarlo fácilmente en tu propio ordenador. Por ejemplo, prueba
con un array de 1000, 100, 10, 1 Millones de elementos y enseguida verás
que tamaño de array puedes utilizar sin problemas.

Espero haberte ayudado,

Saludos
José Luis

El 20 de abril de 2015, 22:02, pepe perez <darkmalka en hotmail.com> escribió:

> buenas
>
> tengo un problema/duda sobre el tamaño de un array. siempre he leido que
> en el tamaño de un array influye la cantidad de memoria ram que tenga el
> ordenador, pero no termino de entenderlo del todo
>
> yo tengo 2 gigas d ram y el array mas grande q puedo hacer en un programa
> usando unsigned long int array[1000000].
>
> si quiero usar 2 arrays en el mismo programa, tengo que repartir las
> casillas es decir 500000 para cada array por ejemplo. pero si ejecuto 2
> programas con unsigned long int array[1000000] cada uno, funcionan
> perfectamente, por lo que el array de un programa no esta usando el maximo
> de mi memoria
>
> asi a ojo, no se si influyen mas factores, el array son 64 megas de memoria
>
> alguien me podria decir si hay manera de poder hacer un array mas grande
> en un solo programa? me gustaria poder usar toda la memoria posible
>
> un saludo y gracias
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
José Luis Torre
ww.ehu.es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20150421/fcf767a6/attachment.html>


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