2014-09-04 4 views
0

Мой рабочий стол 64 бит и имеет 16-гигабайтный барабан.Как сделать программу на C++ более 4 ГБ оперативной памяти?

Есть ли параметр времени компиляции, чтобы включить запуск? Или время выполнения?

+5

Вы просто компилируете платформу x64. 4 ГБ является максимальным для 32-битной программы, поскольку размер указателей. – SHR

+1

Ваш вопрос, кажется, основан на недоразумении. Не было ничего особенного, что вам нужно было сделать, чтобы программа могла использовать более 4 ГБ оперативной памяти, пока ОС может. Проблема заключается в использовании более 4 ГБ виртуального адресного пространства. –

+0

Каков результат 'ulimit -a'? –

ответ

2

Вы используете Linux. Если это не работает, наиболее вероятной проблемой является то, что, несмотря на наличие машины x86_64, вы установили 32-разрядную версию ОС, хотя и на 64-разрядном процессоре. Если у вас 64-разрядная версия ОС, ваша инструментальная цепочка компилятора должна автоматически генерировать код, который может использовать более 4 ГБ памяти.

Чтобы проверить, введите следующую команду:

uname -a 

Вы должны увидеть что-то вроде:

Linux nimrod-ubuntu 3.13.0-29-generiC#53~precise1-Ubuntu SMP Wed Jun 4 22:06:25 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 

Обратите внимание на x86_64 не i386.

Хотя вы можете теоретически перекрестно скомпилировать от i386 до x86_64, в большинстве случаев это не стоит хлопот, и вы захотите сделать переустановку.

1

Это зависит от того, ссылаетесь ли вы на виртуальную память или физическую память.

Для виртуальной памяти вы просто компилируете свой код в виде 64-разрядного приложения, и ваша программа, естественно, будет иметь до 2^64 ГБ виртуальной памяти.

Для физической памяти это зависит от ОС, чтобы выделить, сколько памяти для вашей программы. Если имеется достаточное количество физической памяти, и вы уже используете более 4 ГБ виртуальной памяти, очень вероятно, что ваша программа также занимает более 4 ГБ физической памяти.

1

64-разрядный флаг для gcc -m64.

Если ваш компьютер равен 64 бит, он по умолчанию, и вам необходимо предоставить -m32 для компиляции 32-разрядной версии.

If you want more info look here

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