![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 18
|
![]()
Здравствуйте! Помогите разобраться в причине возникновения ошибки Out of Memory.
Создается приложение типа WinHex. На форме StringGrid, заполняемая информацией из загружаемого файла. Кол-во колонок = 18, кол-во строк определяется длиной файла/16. СпидБаттон залинкован на стандартном действии ActionList FileOpen. Заголовок каждой строки должен показывать начальную позицию в байтах. Собственно, при формировании заголовка где-то в райне 6000000 строки возникает ошибка (пытаюсь открыть файл 300+МБ). Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
ну у вас реально память кончается, чего удивлятся то?
не надо все в память грузить. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 12.09.2012
Сообщений: 1,030
|
![]()
Память надо выделить под этот файл. Функции GetMem и FreeMem.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби. ![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
кто вам эту чушь сказал?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 12.09.2012
Сообщений: 1,030
|
![]()
Я знал это. Если памяти в адресном пространстве процесса не хватает, то надо выделить больше(если, конечно, ещё есть куда выделять).
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби. ![]() |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
Файл уже есть на ЖД, зачем его дублировать в памяти? Про File Mapping прочитайте что-ли. Таким методом можно сотни гигабайт смотреть при 512 мб памяти ОЗУ. |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 18
|
![]()
мне не понятно следущее. допустим, я объявил таблицу размером 23.265.451 на 18. Она прорисовалась пустая. Было ли при этом выделено под каждую ячейку память или нет? Если было, то, формируя шапку, я просто присваиваю строку в уже выделеную память. Как тогда возникает нехватка памяти?
Если не было выделено, то нехватка памяти наступает где-то в районе 375000 строки. Допустим, под строку выделяется 8 байт. Тогда потребуется памяти около 3 МБ. Откуда out of memory? И вообще, как тогда работают табличноподобные программы, типа Excel? Ведь в них можно загрузить файлы и больших размеров. |
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
Эксель хранит иначе в первую очередь, да и подгрузка с диска есть.
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 18
|
![]()
Т.е. единственный выход - прорисовывать таблицу и подгружать из файла нужно ровно столько, сколько помещается на видимой части таблицы?
|
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,762
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка "out of memory" | Rest_Tremor | Общие вопросы Delphi | 14 | 09.04.2013 10:03 |
Load exe into memory and run it from memory | artush1984 | Win Api | 10 | 06.02.2012 18:43 |
Out of memory | Bogoley4ik | C++ Builder | 3 | 09.04.2011 00:02 |
Ошибка Out of Memory | kruftin | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 11.12.2010 18:46 |
Ошибка malloc(): memory corruption | Роман Радер | Общие вопросы C/C++ | 6 | 03.10.2009 19:34 |