Ver Mensaje Individual
  #5 (permalink)  
Antiguo 16/02/2016, 07:25
dmorill
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Quien tiene mayor capacidad vector o list

Cita:
Iniciado por eferion Ver Mensaje
Y "sorprendentemente" falla antes. Lo único que has hecho con eso es que el vector principal acapare más memoria... más memoria consumida por el vector principal = menos cantidad de vectores secundarios... ¿sigues pensando que no es un problema de memoria?

La memoria tiende a fragmentarse... esto es, empieza a tener huecos. Cuanto más uso se le da a un equipo más fragmentada suele estar. Si resulta que el sistema operativo no es capaz de encontrar un hueco lo suficientemente grande como para ubicar la cantidad de memoria que se le pide, el proceso simplemente falla. Si tienes 16 GB de memoria bastan 15 bytes ocupando puntos estratégicos para que tu sistema operativo no sea capaz de reservar paquetes superiores a 1GB
Hola, según ésto si lo hago con listas (aunque ocupe más por elemento) debería poder llenar la lista hasta la capacidad de la ram, cierto? lo probé con el código de antes cambiándolo a list<list<int>> v;.

Código C++:
Ver original
  1. int main(){
  2.     int i,j;
  3.    
  4.     vector<int> vAux;
  5.     for (i = 0; i < 50; i++)vAux.push_back(i);
  6.     list<int> lAux;
  7.     for (i = 0; i < 50; i++)lAux.push_back(i);
  8.     i = 0;
  9.     j = 111222000;  //max 2147483647;
  10.     list<list<int>> v;
  11.     cout << "max size: " << v.max_size() << endl;
  12.     cout << "j.......: " << j << endl;
  13.     cout << "i.......: " << i << endl;
  14.  
  15.     for (i = 0; i < j; i++){
  16.         v.push_back(lAux);
  17.         if (i % 500000 == 0) cout << " i: " << i << endl;
  18.         //if (i > 7500000 && i % 100000==0) cout << " ii: " << v.size() << endl;
  19.     }
  20.     cout << "Presione cualquier tecla para salir..." << endl;
  21.  
  22.     cin.sync();
  23.     cin.get();
  24.     return 0;
  25. }

Y si falló antes, lo que concuerda con lo que dices acerca de que usa más memoria, pero parece que los dos llegan a un "tope" o limite, y en el vector la respuesta es la que tu me dices, que la memoria se fragmenta y se llena de huecos, pero con el caso de las listas, porqué ocurre? ellas no necesitan bloques grandes de memoria.

Saludos,