|
0 / 0 / 0
Регистрация: 22.09.2015
Сообщений: 13
|
|
Выделение большого объема памяти21.12.2015, 22:35. Показов 2083. Ответов 14
Метки нет (Все метки)
необходимо открыть большой файл (около 1 гб) и разместить его в памяти. Какой функция выделить память? globalalloc выдает ошибку.
0
|
|
| 21.12.2015, 22:35 | |
|
Ответы с готовыми решениями:
14
Определение объема оперативной памяти Определение объема оперативной памяти MASM, выделение памяти и заполнение ее символами |
|
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
|
|
| 23.12.2015, 11:05 | |
|
VirtualAlloc или как вариант проекция файла в память.
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2015
Сообщений: 13
|
|
| 23.12.2015, 22:04 [ТС] | |
|
C virtualalloc понятно. Спасибо. А проекция файла в память - это как?
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2015
Сообщений: 13
|
|
| 11.04.2016, 20:39 [ТС] | |
|
С Virtualallock тот же эффект. Файл больше 500 мб не открывается.
0
|
|
|
Terminator of naked apes
832 / 139 / 34
Регистрация: 13.02.2015
Сообщений: 328
|
||
| 11.04.2016, 21:23 | ||
|
0
|
||
|
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
|
|
| 12.04.2016, 08:54 | |
|
Вообще все зависит от конкретного процесса, точнее от фрагментации. Если его адресное пространство забито загруженными dll-ками, то может и 500МБ выделить не поучится. У меня получилось выделить 1200 МБ одним куском.
Для решения данной проблемы нужно загружать программу в отладчике, смотреть ее карту памяти, какие ddl-ки куда грузятся. Если это ваши dll, менять их адреса загрузки поближе к 0x70000000.
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2015
Сообщений: 13
|
|
| 12.04.2016, 09:07 [ТС] | |
|
Да спасибо за ответ. Но вот тут второй вопрос. Суть задачи. открыть большой файл. сделать определенные действия с ним. и сохранить в другой файл. программа перестает работать и выделять нужный объем памяти если я начинаю использовать функцию GetOpenFileName. Сама функция выполняется корректно. но после нее ни globalalloc ни virtualalloc не могут выделить больше 200-300 мб памяти. если я функцию не использую, а просто в исходник прописываю название открываемого файла. то выделяется спокойно и 1 ГБ. И еще, если использую функцию GetOpenFileName Olly вываливается из отладки на этой функции. Но функцию использовать надо. или как-то ее заменить.
0
|
|
|
Ушел с форума
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
|
|
| 12.04.2016, 09:16 | |
|
shrajk,
не видеть фрагмент обсуждаемой программы -- это гадание на кофейной жиже, но скорее всего неправильно заполнена структура, которую ты передаешь GetOpenFileName
0
|
|
|
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
|
|
| 12.04.2016, 10:16 | |
|
ИМХО, при вызове GetOpenFileName загружается over 9000 dll и не остается больших незанятых участков памяти (см. рисунки до и после вызова). Я бы в самом начале программы зарезервировал нужный диапазон при помощи той же VirtualAlloc, но с флагом MEM_RESERVE, чтобы в эти адреса ничто не влезло, а потом уже выделял, когда нужно.
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2015
Сообщений: 13
|
|
| 12.04.2016, 10:23 [ТС] | |
|
Спасибо за ответы. вечером скину точный код. У меня у самого есть подозрение по поводу заполнения структуры ofn. Но скажу честно я нигде толком не нашел нормального объяснения как ее заполнять. скорее противоречивые ответы.
По поводу резервирования памяти до вызова функции, идея хорошая. я ее попробую. Просто однозначно с ней какая-то проблема, сжирает все непрерывные участки памяти. Может кто посоветует чем ее заменить? писать свою функцию как-то влом)
0
|
|
|
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
|
||
| 12.04.2016, 10:25 | ||
|
У меня тоже сжирает, но вроде все правильно заполнено.
0
|
||
|
Ушел с форума
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
|
|||||||
| 12.04.2016, 10:28 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 22.09.2015
Сообщений: 13
|
|
| 12.04.2016, 10:37 [ТС] | |
|
например hwndowner советуют не NULL а дескриптор основного окна.
0
|
|
|
Ушел с форума
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
|
|
| 12.04.2016, 10:45 | |
|
shrajk,
окно диалога можно выдавать и не создавая основное окно, например как в https://www.cyberforum.ru/asse... 51124.html
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2015
Сообщений: 13
|
||||||
| 17.04.2016, 18:01 [ТС] | ||||||
|
Вот текст программы. написан на fasm
0
|
||||||
| 17.04.2016, 18:01 | |
|
Помогаю со студенческими работами здесь
15
Выделение большого объема памяти Выделение большого объема памяти ExAllocatePool Выделение большого объема оперативной памяти Запрос на выделение объема памяти, превышающего 65 000 байт Выделение памяти (CodeGear RAD Studio 2009 - C++ builder). Выделение памяти - консоль vs SDIApp Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|