tamaño máximo de una list<>

Iniciado por solkan05, 22 Agosto 2013, 21:41 PM

0 Miembros y 1 Visitante están viendo este tema.

solkan05

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

eferion

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.

Alien-Z

#2
Cita de: 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

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.

do-while

Cita de: Alien-Z en 23 Agosto 2013, 09:29 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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

amchacon

#4
Cita de: do-while en 23 Agosto 2013, 09:40 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 (cpp) [Seleccionar]
vector<list<Planetas> >

También puedes plantearte el algoritmo y considerar si de verdad necesitas tener todo en la ram.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

rir3760

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.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

amchacon

Cita de: 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).
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:



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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

solkan05

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