Привет всем. Есть машинка с 4Гб оперативки, ХР SP1 Pro. При попытке выделить более 2 Гб возвращается нулевой указатель. Пробовал GlobalAlloc, LocalAlloc, VirtualAlloc. Диспетчер задач показывает, что доступно 3.2 Гб физической или 5.6 Гб виртуальной. Подскажите, где копать.
Так и должно быть. Доступное адресное пространство для 32-х битных приложений — от 0x10000 до 0x80000000 (т.е. чуть меньше 2 Гб) часть из которого уже занята образом исполняемого файла и загруженными библиотеками.
помню ломал я какую-то строительную приблуду через какое-то время клиент звонит и умоляет помочь он там нахерачил-нахерачил насоздавал-насоздавал а расчет не идет - падает ну прислал мне исходный файл, я поковырялся, разобрался - расчетка сжирает всю виртуальную память в процессе, exception и на выход система 2к3, чистая, на варе так вот - ставил я такой ключ - фиг поднял чистую 2к - фиг хп не стал пробовать даже поднял чистый 98(!) - прошел расчет, но медленно зараза, там хипаллок в разы тормознее почему-то немного добавил в схему - чуть-чуть буквально - и 98 тоже exception
z0mailbox К такому ключу не забыл IMAGE_FILE_LARGE_ADDRESS_AWARE? да ещё много там тонкостей в выделении... всё из-за фрагментации виртуальной памяти всякими длл с бездумными базами загрузки образа... В данном случае выигрывает выделение малыми кусочками, но много раз.