Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 2

Ошибка сегментирования при чтении файла

24.12.2013, 16:43. Показов 1833. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!
Компилирую обычный .cpp: g++ main.cpp. "Ошибка сегментирования" возникает при чтении данных из файла. А именно при выборе пункта меню программы "Прочитать данные из файла".

Код функций чтения данных из файла:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//метод получения числа объектов в файле
unsigned int uifCountDataBaseObjects()
{
    ifstream ifsDataBase;
    ifsDataBase.open("out.txt", ios::binary);
    ifsDataBase.seekg(0, ios::end);
    return (int) ifsDataBase.tellg() / sizeof(clsAuto);
}
//метод чтения данных из файла
clsAuto& clsAuto::fnReadDataBase(unsigned int uiObjectNum)
{
    ifstream ifsDataBase;
    ifsDataBase.open("out.txt", ios::binary);
    ifsDataBase.read( (char*)this, sizeof(*this) );
    return (*this);
}
Case в функции main:
C++
1
2
3
4
5
6
7
8
9
case '1': 
            for(unsigned int i=0; i<uifCountDataBaseObjects(); i++)
            {
                newAuto.fnReadDataBase(i);
                lstAutoList.push_back(newAuto);
            }
            uiObjectsInList=lstAutoList.size();
            cout<<uiObjectsInList;
            break;
GDB показывает:
Program received signal SIGSEGV, Segmentation fault.
0xb7f91ebc in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&) ()
from /usr/lib/i386-linux-gnu/libstdc++.so.6
Может в функциях неправильно возвращается значение? В программировании под Linux еще новичок и всех нюансов пока не знаю.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2013, 16:43
Ответы с готовыми решениями:

Ошибка сегментирования (core dumped) при обработке файла большого размера
Поблочно обрабытываю текстовый файл ~1,5 Гб, при достижении конца файла получаю: Ошибка сегментирования (core dumped). Использую...

Ошибка сегментирования при использовании рекурсии
Суть проблемы в следующем: При функции со значением а(100) все работает отлично. Но как заставить функцию работать с числом миллион...

Ошибка сегментирования при сравнивании файлов
Задача выполеяется ,но невсегда. Выскакивает ошибка сегментирования! нудно задать два каталога и если в одном из них есть ещё один католог...

4
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
24.12.2013, 17:37
Цитата Сообщение от Raz24 Посмотреть сообщение
ifsDataBase.read( (char*)this, sizeof(*this) );
Не надо так делать.
Или по крайней мере надо очень хорошо представлять область применимости, чего в данном случае, судя по ошибке, не наблюдается.
0
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 2
24.12.2013, 19:30  [ТС]
NoMasters, Объясните, пожалуйста, тогда как лучше будет по-другому реализовать этот метод.
0
128 / 126 / 60
Регистрация: 22.01.2014
Сообщений: 464
23.01.2014, 02:00
Ошибка:
ifsDataBase.read( (char*)this, sizeof(*this) );
Лучше этого не делать для классов. Объекты класса - это специальные объекты, и запись по его адресу может привести к непредвиденным действиям.
Для сруктурных типов это можно делать, только осторожно.
0
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
26.01.2014, 00:08
То что вы задумали, называется сериализация.
Почитайте начало здесь. Там же есть страница на небольшой пример на C++. Дойдете до реализации, появятся конкретные вопросы, you are welcome
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2014, 00:08
Помогаю со студенческими работами здесь

Ошибка сегментирования при выводе меню
#include stdio.h #include stdlib.h typedef struct lib { int nomer; Номер читательского char last_name; фамилия ...

Ошибка сегментирования при компиляции
Когда компилирую через g++ компилируется, при запуске выдает ошибку сегментирования, а при компиляции через NetBeans IDE выдает две ошибки,...

Ошибка сегментирования при доступе к переменным класса
Имею: - CentOS - gcc 4.8 - Собственный класс - В этом классе есть объект = указатель на другой класс (назовем его log). - В...

Ошибка сегментирования при чтении из файла.
char * line; while (! feof(source)) { line = &quot;&quot;; fgets(line, 255, source); printf(line); } ...

Ошибка при чтении из файла
Проблемы с кодировкой. Выводит арбуз вместо слова арбуз. Как это исправить? private void button6_Click(object sender, EventArgs...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru