Тема: 4.14 Релиз
Показать сообщение отдельно
Старый 12.04.2019, 15:24   #502
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Если разговор об оперативной памяти, то Ил 32-х разрядный и, соответственно, максимальный размер доступной процессу памяти 2 GB (немного меньше на самом деле, примерно 1.75 Gb).

Если мы собрали приложение с ключом /LARGEADDRESSAWARE:YES, то будет доступно 3Gb.

У уже готового приложения, которое не пересобрать, можно также увеличить значение до 3 Gb установив один битик в поле характеристики в заголовке файла. Но это может быть чревато случайными ошибками если приложение не знает о возможности использовать соответствующую память. Например, адреса за вторым гигабайтом имеют установленный в единицу старший бит, коды ошибок тоже обычно имеют установленый в единицу старший бит. Допустим наша функция возвращает адрес, а в случае неудачи код ошибки и проверка этого производится с помощью проверки старшего бита на 1, это довольно частая практика. В этом случае, при пересечении границы 2 Gb, программа начнёт считать, что функция возвращает ошибку даже при её успешной работе. Т.е., можно установить, но надо тщательно проверять весь функционал, что не всегда возможно и надёжно.

Примерно так.

UPD: Да, уточню, в 64-х битной ОС памяти выделится около 3.5 Gb. Если OS 32-х битная, то она сам должна быть запущена с опцией поддержки 3 Gb.

Последний раз редактировалось NB79; 12.04.2019 в 15:29.
NB79 вне форума   Ответить с цитированием