Мой рабочий стол 64 бит и имеет 16-гигабайтный барабан.Как сделать программу на C++ более 4 ГБ оперативной памяти?
Есть ли параметр времени компиляции, чтобы включить запуск? Или время выполнения?
Мой рабочий стол 64 бит и имеет 16-гигабайтный барабан.Как сделать программу на C++ более 4 ГБ оперативной памяти?
Есть ли параметр времени компиляции, чтобы включить запуск? Или время выполнения?
Вы используете 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
, в большинстве случаев это не стоит хлопот, и вы захотите сделать переустановку.
Это зависит от того, ссылаетесь ли вы на виртуальную память или физическую память.
Для виртуальной памяти вы просто компилируете свой код в виде 64-разрядного приложения, и ваша программа, естественно, будет иметь до 2^64 ГБ виртуальной памяти.
Для физической памяти это зависит от ОС, чтобы выделить, сколько памяти для вашей программы. Если имеется достаточное количество физической памяти, и вы уже используете более 4 ГБ виртуальной памяти, очень вероятно, что ваша программа также занимает более 4 ГБ физической памяти.
64-разрядный флаг для gcc -m64.
Если ваш компьютер равен 64 бит, он по умолчанию, и вам необходимо предоставить -m32 для компиляции 32-разрядной версии.
Вы просто компилируете платформу x64. 4 ГБ является максимальным для 32-битной программы, поскольку размер указателей. – SHR
Ваш вопрос, кажется, основан на недоразумении. Не было ничего особенного, что вам нужно было сделать, чтобы программа могла использовать более 4 ГБ оперативной памяти, пока ОС может. Проблема заключается в использовании более 4 ГБ виртуального адресного пространства. –
Каков результат 'ulimit -a'? –