Это максимальная память, которую я могу зарезервировать для процесса? - PullRequest
0 голосов
/ 02 февраля 2012
char bytes[0x7FFFFFFF]; /* this? */

int main()
{
    return 0;
}

Более 2 Гб?(если я правильно рассчитал)

Я нахожусь в 32-битной системе с 4 ГБ памяти.В другой системе это было бы более или менее?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Во-первых, это будет зависеть от ряда факторов, таких как платформа и даже конфигурация на платформе. Максимальное адресное пространство, доступное для 32-разрядного процесса, составляет , как правило, , ограниченное тем, где разделено пространство пользователя / ядра, которое часто равно 3G / 1G или 2G / 2G (пользователь / ядро).

Теперь, вероятнее всего, создание такого массива фактически не "зарезервирует" всю эту память. Скорее, он будет отображен в виртуальное адресное пространство и фактически не начнет потреблять память, пока к ней не будет произведен доступ (см .: подкачка по требованию).

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

0 голосов
/ 02 февраля 2012

Это зависит от:

  • компилятора
  • системы
  • ОС

Если вы работаете на win32, вы даже не используете 4 ГБ или ОЗУ!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...