Я хочу запустить этот огромный проект на C++, который использует до 8,3 ГБ в памяти. Могу ли я запустить эту программу при определенных обстоятельствах или это невозможно?Ограничение выделения памяти на C++
ответ
Все в порядке. Вам просто нужно быть в 64-битной архитектуре и убедиться, что имеется достаточное пространство подкачки + физическая память
Это действительно зависит. Если программа должна иметь все 8.3 ГБ в памяти все время (working size), возможно, вам потребуется иметь такой же объем памяти, установленный на вашем компьютере.
Предположим теперь, что у вас есть 4 ГБ ОЗУ. В таком случае вы, скорее всего, сможете выполнить программу благодаря использованию swap (область жесткого диска, в которой память изменяется и расширяется с целью увеличения размера виртуальной памяти). Но даже если он действительно может работать, он может работать очень медленно (до такой степени, что он не используется) из-за trashing.
С другой стороны, если ваша программа обрабатывает 8,3 ГБ данных, но обрабатывается в меньших фрагментах, это будет означать, что все данные не хранятся в памяти все время. Тогда вам не нужно будет устанавливать такой большой объем оперативной памяти на вашем компьютере.
Как Оли Charlesworth упоминал вам потребуется 64-битная система (как аппаратные средства и OS)
или, по крайней мере, система с
PAE возможностями, если вы хотите установить более 4 Гб оперативной памяти в системе
,
PAE не собирается вам помогать: каждая программа по-прежнему ограничена 4 ГБ памяти, хотя ОС может использовать больше. – Yexo
@Yexo Да, вы правы. В этом случае PAE будет бесполезным, так как OP, похоже, просит одно приложение (процесс). Я исправил свой ответ соответственно. – betabandido
Да, это возможно. Вы должны быть в 64-битной среде и, конечно же, иметь оперативную память. Вы все равно не сможете выделить более 4 гб непрерывного адресного пространства за раз. Тем не менее, возможно, вам придется выделять его небольшими кусками.
- 1. Документирование выделения памяти C++
- 2. Ограничение выделения памяти GPU в skflow
- 3. выделения памяти в C++
- 4. C - Указатель выделения памяти
- 5. выделения памяти на создание объекта C++
- 6. выделения памяти на структуру в чистом C
- 7. C Ansi закрытия выделения памяти
- 8. Ошибка выделения, кроме выделения памяти
- 9. Утечки памяти без выделения памяти
- 10. с ++ вопрос выделения памяти
- 11. Struct ошибка выделения памяти
- 12. Проблема с ++ выделения памяти
- 13. Код выделения динамической памяти
- 14. Лучший способ обработки выделения памяти в C?
- 15. Кто обрабатывает сбой «нового» выделения памяти C++?
- 16. Ограничение распределения динамической памяти C++
- 17. Issue относительно выделения памяти в C
- 18. Добавление выделения памяти в C++ массив
- 19. Ошибка выделения памяти беззнаковых длин в C
- 20. Динамическая инициализация выделения памяти в C++ класс
- 21. C# sub-array без выделения памяти (копирование)
- 22. Проблема выделения памяти для указателя в C
- 23. Вызов методы для выделения памяти C++
- 24. Понимание NSS PK11_CipherOp и C выделения памяти
- 25. выделения памяти для функций членов в C++
- 26. выделения негабаритный памяти - указатели в C
- 27. C++ Qt исключение выделения памяти с QList
- 28. выделения памяти C с входом файла
- 29. sprintf без выделения памяти
- 30. Ошибка выделения памяти Glib
Это немного запутанный вопрос. Если вы знаете, что он использует 8.3GB, вы должны знать, что он работает. –
нет .. Я подсчитал, сколько памяти он должен использовать. если я запустил его, он говорит «bad alloc», поэтому мне нужно как-то расширить этот предел памяти. –
Тогда вы действительно не знаете, что использует программа, но размер набора данных, который вы хотите, чтобы программа работала. –