при использовании флага LARGEADDRESSAWARE моя 32-битная программа может получить доступ к 4 ГБ адресного пространства или только 3 ГБ адресного пространства? Зачем?
на Windows 7 64bit, сколько адресного пространства может получить доступ 32-разрядная программа?
Ответы (4)
32-битный процесс с установленным LARGEADDRESSAWARE может адресовать 4 ГБ в 64-битной Windows. Это возможно, потому что именно так это реализовали замечательные инженеры Microsoft.
Это задокументировано здесь.
может быть, anwser есть
32-битный процесс будет обращаться к 2 ГБ ОЗУ, с флагом LARGEADDRESSAWARE он достигает 4 ГБ
В большинстве ОС ваше 32-битное пространство разбито на части, которые ваша программа (код пользователя) может выделять и использовать, а также на разделы, которыми владеет ядро. Если вы не пишете свою собственную ОС / ядро, позвольте системным API (таким как malloc / free, new / delete в C / C ++) или базовому управлению в python, java управлять выделением памяти за вас.
Однако, если у вас заканчивается память, начинайте учитывать
- У меня где-то течь? Вы не освобождаете каждый указатель, который изменяете. Замечательные инструменты, такие как valgrind может помочь в их поиске.
- Нужно ли мне переделывать мою программу, чтобы использовать меньше памяти? Вы делаете такие вещи, как сохранение каждой строки данных, которые вы читаете из огромного файла в массиве на python или java. Ищите вещи, которые можно выбросить