2012-06-09 3 views
0

Я хочу запустить этот огромный проект на C++, который использует до 8,3 ГБ в памяти. Могу ли я запустить эту программу при определенных обстоятельствах или это невозможно?Ограничение выделения памяти на C++

+0

Это немного запутанный вопрос. Если вы знаете, что он использует 8.3GB, вы должны знать, что он работает. –

+0

нет .. Я подсчитал, сколько памяти он должен использовать. если я запустил его, он говорит «bad alloc», поэтому мне нужно как-то расширить этот предел памяти. –

+2

Тогда вы действительно не знаете, что использует программа, но размер набора данных, который вы хотите, чтобы программа работала. –

ответ

7

Все в порядке. Вам просто нужно быть в 64-битной архитектуре и убедиться, что имеется достаточное пространство подкачки + физическая память

5

Это действительно зависит. Если программа должна иметь все 8.3 ГБ в памяти все время (working size), возможно, вам потребуется иметь такой же объем памяти, установленный на вашем компьютере.

Предположим теперь, что у вас есть 4 ГБ ОЗУ. В таком случае вы, скорее всего, сможете выполнить программу благодаря использованию swap (область жесткого диска, в которой память изменяется и расширяется с целью увеличения размера виртуальной памяти). Но даже если он действительно может работать, он может работать очень медленно (до такой степени, что он не используется) из-за trashing.

С другой стороны, если ваша программа обрабатывает 8,3 ГБ данных, но обрабатывается в меньших фрагментах, это будет означать, что все данные не хранятся в памяти все время. Тогда вам не нужно будет устанавливать такой большой объем оперативной памяти на вашем компьютере.

Как Оли Charlesworth упоминал вам потребуется 64-битная система (как аппаратные средства и OS) или, по крайней мере, система с PAE возможностями, если вы хотите установить более 4 Гб оперативной памяти в системе ,

+1

PAE не собирается вам помогать: каждая программа по-прежнему ограничена 4 ГБ памяти, хотя ОС может использовать больше. – Yexo

+0

@Yexo Да, вы правы. В этом случае PAE будет бесполезным, так как OP, похоже, просит одно приложение (процесс). Я исправил свой ответ соответственно. – betabandido

2

Да, это возможно. Вы должны быть в 64-битной среде и, конечно же, иметь оперативную память. Вы все равно не сможете выделить более 4 гб непрерывного адресного пространства за раз. Тем не менее, возможно, вам придется выделять его небольшими кусками.

Смежные вопросы