|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.12.2013, 16:58 | #1 | |
Регистрация: 24.12.2012
Сообщений: 3
|
Ошибка сегментирования при чтении файла
Доброго дня!
Компилирую программу в Linux'е: g++ main.cpp. Программа компилируется и запускается без ошибок. Но во время вызова функции чтения данных из файла, а именно при выборе пункта меню моей программы "Прочитать данные из файла" возникает ошибка - "Ошибка сегментирования". Код функций чтения данных из файла: Код:
Код:
Цитата:
Последний раз редактировалось raz24; 27.12.2013 в 17:00. |
|
27.12.2013, 17:25 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
У вас, судя по всему, в объекте есть переменные типа std::string - они выделяют память динамически и при каждом запуске программы она будет разная, а при чтении из файла вы получаете указатель, выделенный в прошлый прогон программы.
Чтоб заработало, либо делайте char var[123] вместо std:string var; либо не делайте read(this, sizeof(this)). |
27.12.2013, 19:13 | #3 | |
Регистрация: 24.12.2012
Сообщений: 3
|
Цитата:
|
|
27.12.2013, 22:06 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
В таком виде - нет, да и это худший из возможных способов.
Что будет если завтра вам надо будет добавить новые данные... |
28.12.2013, 22:26 | #5 |
Регистрация: 24.12.2012
Сообщений: 3
|
А каким способом можно заставить работать функцию не меняя тип данных? Мысли иссякли, да и перелопачивать всю программу не очень хочется. Направьте на истинный путь.
|
28.12.2013, 22:36 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я думаю что сериализацию придется писать. ИМХО нет стандартных путей решения таких проблем. Т.е. написать метод или функу, которая переводит все поля объекта\структуры в некий поток байт с маркерами границ данных полей. А при считывании считав маркер можно понять сколько байт считывать для конкретного поля.
Ключевые слова "Сериализация", "Маршалинг".
I'm learning to live...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при чтении файла | Стремящийся | Общие вопросы по Java, Java SE, Kotlin | 4 | 03.07.2012 16:50 |
Ошибка при чтении из файла | BEL9ILLI | Общие вопросы C/C++ | 3 | 13.01.2012 10:12 |
Ошибка при чтении из файла | alex_alpha | Общие вопросы C/C++ | 5 | 08.08.2010 20:28 |
ошибка при чтении файла | Alik-Soldier | Общие вопросы C/C++ | 1 | 31.05.2009 20:44 |
Ошибка при чтении БД из файла!! | sting | БД в Delphi | 4 | 14.12.2008 22:23 |