![]() |
|
Модераторы: bsa |
![]()
|
|
| MsLive |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Использую:
-В данном коде загружается весь массив в память- ведь нельзя создать оператором new один массив на конкретной позиции. А как можно по другому сделать? Заранее благодарен. Это сообщение отредактировал(а) MsLive - 4.9.2008, 11:37 |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Что это было?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Согласен с предыдущим постом: сначала ты для себя определись что ты хочешь, потом сформулируй вопрос по-человечески
|
|||
|
||||
| Lazin |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
оператор new может создавать объекты по одному, и из файла их то-же можно читать по одному, этот код можно достаточно просто передалать... есть более ООП вариант, перегрузить для _car_Item (кстати так структуру называть не стоит), операторы
и
и дальше работать с iostream... |
||||||
|
|||||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Что это было 2?
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
в коде сначала определяется размер файла, потом создается массив объектов, затем он считывается из файла (так будет работать только для POD типов), вопрос собственно был в том, можно-ли по другому это сделать, как я понял, не загружая весь файл в память(допустим он большой), а загружая по частям, или вообще по одному объекту
Добавлено через 2 минуты и 33 секунды только тогда придется сделать несколько вызывать fread а так-же выделять и освобождать память динамически в цикле вот и вся разница |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
У нас появился телепат. Теперь можно поднимать целое кладбище топиков. Трибуну мне, графин!
Lazin, готовься к дешифровке СУВ -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| MsLive |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Да, именно так. Я хотел сначала вот так сделать(через указатель):
- Но не работает(а вроде должно) :( Поделитесь если кто делал, плиз. Добавлено через 2 минуты и 37 секунд
А чего тут собственно непонятно |
||||||
|
|||||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
все Добавлено @ 03:18
нвдаваясь особо в подробности, переделал на чтение блоками по 32 * sizeof(_car_Item) байт но у этого кода есть недостатки, в частности здесь может быть утечка памяти, так как код небезопасен с точки зрения исключений, еще так можно работать только с POD типами зы код не компилировал Это сообщение отредактировал(а) Lazin - 4.9.2008, 22:42 |
|||
|
||||
| MsLive |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
А зачем нужно использовать item_count? Я имел ввиду то, что мне нужно загрузить один объект с файла, который хранит тысячи объектов:
Это сообщение отредактировал(а) MsLive - 5.9.2008, 13:14 |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
то что ты имел ввиду, и то, что мы поняли, это две разные вещи...
что-бы загрузить один объект, если конечно объекты одного размера, то нужно определить его смещение в файле и прочитать N байт по этому смещению |
|||
|
||||
| MsLive |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Но а если до этого смещения мусор(тип неизвестен) то как определить количество N байт. Конечно можно разбросать по файлам но Хотелось бы сделать как я написал выше:
-Но как они это сделали -не понятно(нельзя выполнять действия через указатель)- это очень странно тем более для msvc++ |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
никак, есть такое понятие как формат файла, оно включает в себя способ чтения данных из файла код очень странный, зачем нужны сто миллионов указателей, если потом читается только один объект, жуть какая-то... |
|||
|
||||
| MsLive |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Сто миллионов указателей нужны для того, чтобы загрузить миллионный массив(на запас) Т.е. Мне нужно получить объект находящийся на позиции 2(как написано в коде) Зы ведь указатели ничего не берут. |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Поправка, вот только занимают место в стеке, обычно по 4 байта каждый (на 32 битной системе)
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |