Когда я пытаюсь изменить размер списка, программа вылетает ... Посмотрите на этот код, попробуйте ввести 1,000,000,000 (10^9) ... На моих окнах 7 x64 doesnt Работа.Сбой списка C++ STL с номерами более 1 000 000 000
#include <cstdlib>
#include <iostream>
#include <list>
using namespace std;
int main(int argc, char *argv[])
{
list<long long> l;
long long n;
cin>>n;
cout<<l.max_size()<<endl;
//uncomment 1 or 2
//l.resize(n,l.size()+1); //1st try
/*for (long long i=0; i<n; i++) //2nd try
l.push_back(n);*/
//system("PAUSE"); // uncomment if needed
return 0;
}
Максимального размер составляет более 4 * 10^9, но по-прежнему не работает ... Im использование новейшего MinGW (G ++)
Как вы думаете, сколько памяти вы потребляете с помощью элементов списка 10^9? Даже если это простой список с двойной связью, у вас есть 2 указателя (2 x 8 байт) + значение (еще 8 байтов) (всего на элемент), что дает вам около 24 ГБ памяти. Также обратите внимание, что для реализаций может потребоваться больше, чем только этот размер 2x8Byte + вашего типа данных для каждого элемента. – Nobody
'1000000000 * sizeof (long long)', вероятно, больше, чем количество байт ОЗУ вашего компьютера. Попробуйте [загрузить больше ОЗУ] (http://www.downloadmoreram.com/). –
Почему он падает? Вы потеряли память? ОС не обязана [и на самом деле, она не позволяет] иметь 2^64 байта для вашей программы, даже для 64-битных систем – amit