![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
Нужно загрузить очень большой фале в ОП но её может не хватить как сделать чтоб программа не падала от нехватки ОП ?
У меня есть две идеи но как их реализовать не знаю ! 1. Начать закружать ОП и если она кончиться то перехватить это исключение и обработать его. 2. Каким-то обзором определить количество свободной ОП до начала загрузки файла и уже там думать что с этим делать. По 1 не знаю какое исключение генерируется и как его отловить. По 2 не знаю как определить кол-во свободной ОП. Посоветуйте что делать, или может есть ешо какие идеи для предотвращения паления программы ! |
|||
|
||||
Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
А вы про виртуальную память слышали? До вас уже обо всем позаботились...
ЗЫ Что то мне подсказывает, что вашу задачу можно решить без загрузки в память всего файла. Это сообщение отредактировал(а) Sartorius - 30.7.2009, 14:41 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
||||
|
||||
Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Sartorius мне подсказывает, что то, что мне что-то подсказывает, что вашу задачу можно решить без загрузки всего файла в ОП, правильно. Я, вот сейчас работаю с файлами 100+ Mb и использую потоки. -------------------- ![]() |
|||
|
||||
Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
azesmcar, спасибо за ссылку но както пока не разобрался как использовать эту функцию ... примера нет а по описанию мне както не вникнуть что она делает .
Cheloveck а можно поподробнее по потоки , как ты их используешь чтоб не загружать весь в фаел в ОП ? |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
Что, примеров не нашел? http://www.cs.purdue.edu/homes/fahmy/cs503/mmap.txt http://www.linuxquestions.org/questions/pr...rial-cc-511265/ http://www.devshed.com/c/a/BrainDump/Using...vanced-File-IO/ http://publib.boulder.ibm.com/infocenter/i...=/apis/mmap.htm http://www.ecst.csuchico.edu/~beej/guide/ipc/mmap.html Добавлено через 57 секунд Написано же
http://www.translate.ru |
||||
|
|||||
Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
то есть в функцию передаём файл и она проверяет поместится он в ОП или нет ?
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
||||
|
||||
Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: нет Всего: 32 |
Вот кусок из одной из моих прог. -------------------- ![]() |
||||
|
|||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Cheloveck, Что-то я не вижу чтоб было указанно что данные только текстовые.
Добавлено через 6 минут и 26 секунд Remiznik, Так задача собственно какая? Скопировать файл? Если да, то тут: http://forum.vingrad.ru/forum/topic-267913.html -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
LisAnd |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 13.5.2009 Репутация: нет Всего: нет |
Отображаемая память рулит
![]() |
|||
|
||||
Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
задача в том что есть файл там данные записаны особенным обзором и их не просто нужно загрузить в память а в вектор но прежде чем загрузить в вектор нужно выделить под него память а если файл слишком большой выдать предупреждении !
и мне нужно знать хватит ли места в ОП для этого вектора. |
|||
|
||||
vinick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 4 Всего: 22 |
Можешь попробовать ловить std::bad_alloc из resize и SIGSEGV. resize вызывает констурторы для элементов, следовательно доступ к памяти будет, а значит либо исключение, либо сигнал выстрелят. Но лучше пересмотреть алгоритм. Что ты будешь делать если файл попадется такой, что со скрипом влезет в память, но ни на что другое памяти уже не останется? А что делать пользователю с твоим предупреждением? бежать в магазин за планкой памяти, за двумя или заказывать кластер на петабайт? |
|||
|
||||
Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
да я понимаю что все данные загружать в ОП это абсурд ... но если файл не помешается в ОП то я применю алгоритм и буду выборочно загружать .... но если файл помешается то надо загрузить !
|
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 3 Всего: 33 |
Напиши свой объект вектор. В нем, вместо выделения памяти, используй проецирование файла в память.
Какие именно операции ты выполняешь с этим вектором? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |