Всем привет!
Сегодня натолкнулся на задачу в которой не очень большое количество различных инпутов. Я недолго думая написал перебор, который отработал на всех тестах кроме одного. Проблема оказалась в том, что при запуске моей программы на нее видимо накладывается ограничение на максимальное количество оперативной памяти. Поэтому получается такая картинка:
Ну и конечно вопрос: как можно скомпилировать программу, чтобы не было ограничения на память?
P.S.: Компилирую я все под GNU (но есть MVС компилятор) и под виндой.
Насколько мне известно, на 32-битном Windows адресное пространство в пределах одного процесса для пользователя ограничено 2 ГБ, остальные 2 ГБ отводятся ядру. Доступное пользователю пространство можно увеличить до 3 ГБ, передав ядру определённый параметр при запуске системы: http://msdn.microsoft.com/en-us/library/windows/hardware/ff556232.aspx (по этой ссылке ещё и указывают, как надо компилировать программу для 3 ГБ).
На 64-битном Windows 32-битный процесс по идее может использовать все 4 ГБ (если он скомпилирован так, как выше). Ну и, естественно, для 64-битных программ нет ограничений.
windows у меня 64битный. Надо видимо просто скомпилировать под 64 бита
Скачай 64-битный MinGW и используй столько памяти, сколько есть у машины. Я, было дело, 14ГБ использовал в одном переборе.
Да и надо еще докупить памяти 8 гигов. А под x64 mingw надо с какими то параметрами компилировать или при любой компиляции получается 64битная программа?
Если использовать 64-битный MinGW, то никаких дополнительных параметров не нужно. Кстати, им же можно собирать и 32-битные проги, если компилятору подать параметр
-m32
.Ок попробую
А в момент резкого скачка программа упала? Если нет, то очевидно, что кучу памяти просто отправили в swap-файл.
В этот момент винда перестала давать проге память и прога упала с exceptionом