Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: solkan05 en 22 Agosto 2013, 21:41 pm



Título: tamaño máximo de una list<>
Publicado por: solkan05 en 22 Agosto 2013, 21:41 pm
Alguien sabe el tamaño maximo que acepta de datos una list<>
el problema es que estoy trabajanddo con imagenes de satelites, estoy generando por un método una imagen mucho más grande y llega el momento que la lista explota con solo 16 777 216 datos


Título: Re: tamaño máximo de una list<>
Publicado por: eferion en 22 Agosto 2013, 22:11 pm
El template list creo que utiliza un índice de tipo int. Generalmente un int son 31 bits ( 32 si cuentas con el signo ). Aun asi dependiendo de la maquina y el compilador su tamaño puede variar.

En el caso que te expongo tendrias 2147483648 posiciones.


Título: Re: tamaño máximo de una list<>
Publicado por: Alien-Z en 23 Agosto 2013, 09:29 am
Alguien sabe el tamaño maximo que acepta de datos una list<>
el problema es que estoy trabajanddo con imagenes de satelites, estoy generando por un método una imagen mucho más grande y llega el momento que la lista explota con solo 16 777 216 datos

Es evidente, si dices que estás almacenando imágenes de gran tamaño y llegas a tener 16 777 216 es normal que no haya memoria suficiente. La solución a esto  es trabajar conjunto con el disco duro, ve guardando las imágenes que no utilices y cárgalas cuando las necesites (por ejemplo llevando una list<> de sus identificadores y no almacenando la foto en sí); la memoria RAM es demasiado limitada para lo que intentas.

Saludos.


Título: Re: tamaño máximo de una list<>
Publicado por: do-while en 23 Agosto 2013, 09:40 am
Es evidente, si dices que estás almacenando imágenes de gran tamaño y llegas a tener 16 777 216 es normal que no haya memoria suficiente. La solución a esto  es trabajar conjunto con el disco duro, ve guardando las imágenes que no utilices y cárgalas cuando las necesites (por ejemplo llevando una list<> de sus identificadores y no almacenando la foto en sí); la memoria RAM es demasiado limitada para lo que intentas.

Saludos.

Eso es. Aunque la cantidad de datos almacenados en la lista esté lejos del límite de la lista, tienes que tener en cuenta que si estás trabajando con un sistema de 32 bits, la cantidad máxima de RAM de que dispone tu programa son 4GB (2^32 bytes), por lo tanto la cantidad máxima de imágenes que puedes almacenar, suponiendo que todas las imágenes ocupen la misma cantidad de bytes, estará cerca de 2^32/tamaño_en_bytes_imagen. A partir de ahí el programa reventará, así que, como ya te han dicho, tendrás que ir tirando de disco duro.

¡Saludos!


Título: Re: tamaño máximo de una list<>
Publicado por: amchacon en 23 Agosto 2013, 09:53 am
Eso es. Aunque la cantidad de datos almacenados en la lista esté lejos del límite de la lista, tienes que tener en cuenta que si estás trabajando con un sistema de 32 bits, la cantidad máxima de RAM de que dispone tu programa son 4GB (2^32 bytes)
Un programa de 32 bits solo puede dirrecionar 2 gb. Supongo que lo estará haciendo en 64 bits para aprovechar toda la memoria.

Mi consejo esque hagas un vector de listas:

Código
  1. vector<list<Planetas> >

También puedes plantearte el algoritmo y considerar si de verdad necesitas tener todo en la ram.


Título: Re: tamaño máximo de una list<>
Publicado por: rir3760 en 23 Agosto 2013, 16:18 pm
Lo usual en un sistema con direcciones de 32 bits es acceder a 4GB de memoria (2^^32 es igual a 4,294,967,296). En el caso de MS Windows una referencia en linea es Virtual Address Space (http://msdn.microsoft.com/en-us/library/windows/desktop/aa366912%28v=vs.85%29.aspx).

Un saludo


Título: Re: tamaño máximo de una list<>
Publicado por: amchacon en 23 Agosto 2013, 17:07 pm
Lo usual en un sistema con direcciones de 32 bits es acceder a 4GB de memoria (2^^32 es igual a 4,294,967,296).
Eso es para el SO. Los programas solo pueden adceder a 2 gb, lo pone en el mismo link  y es muy fácil demostrarlo:

(http://img818.imageshack.us/img818/6615/sinttulovzm.png)

https://dl.dropboxusercontent.com/u/69551225/Saturar_Memoria.exe

Como puedes ver, aún me queda más de 1 GB de memoria sin usar. Si compilo el programa en 64 bits, me ocupa toda la memoria.


Título: Re: tamaño máximo de una list<>
Publicado por: solkan05 en 27 Agosto 2013, 15:45 pm
gracias por la ayuda, pero les diré que esuna sola imagen, y necesito ahora alguna bibliografia que me diga como ir almacenando parte de esta directo al disco duro reservando un espacio de este
gracias