std :: bad_alloc ulimit

Я работаю на 32-битной Ubuntu 12.04. Объем оперативной памяти составляет 7,7 ГБ. Когда я запускаю определенный процесс (написанный на C ++) и достигает 50% использования ОЗУ, такой процесс выдает «std :: bad_alloc».
Странно то, что размер кучи не ограничен (команда ulimit -v возвращает «unlimted»).
Так что может быть причиной?

2

Решение

На большинстве 32-разрядных платформ процесс не может обрабатывать более 4 ГБ (2 ^ 32 байт) виртуальной памяти. В 32-битном Linux 1 ГБ адресного пространства зарезервировано для ядра, поэтому пользовательские процессы ограничены 3 ГБ адресуемой памяти.

5

Другие решения

На 32-битной машине, даже с PAE, адресное пространство одного процесса не может превышать 4 ГБ.

3

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector