Форум программистов, компьютерный форум CyberForum.ru

Access violation reading location - C++

Восстановить пароль Регистрация
 
reddomar
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 1
08.06.2016, 13:04     Access violation reading location #1
Помогите пожалуйста!
Создаю программу, которая ведет учет данных. В бинарный dat-файл записываются объекты класса (Account) - логин(string), пароль(string) и bool-переменная. Если файл не создан, то создает его и добавляет учетную запись админа (вводит данные по умолчанию). Считываю данные из файла в вектор (функция ниже). Проблема в том, что если файла нету и создается файл по умолчанию, то в дальнейшем программа работает (можно войти в систему), но если файл уже был создан, а в нем уже есть запись (которую делали по умолчанию), то вылетает ошибка. Если смотреть дебагером, то вылетает на return'е этой функции.

Также в поле объекта записывается статическя переменная count, которая ведет подсчет записей. В конструкторе класса к ней прибавляется единица. Ввел потому, что бинарный файл лишний раз считывал данные.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
bool readAccountData(vector<Account>& v)
{
    fstream fin;
    fin.open("Accounts.dat", ios::binary | ios::in | ios::beg);
    if (fin.is_open())
    {
        Account Accobj;     
        fin.read(reinterpret_cast <char*> (&Accobj), sizeof(Accobj));
        v.push_back(Accobj);
        Accobj.getCount()--;
        for (int i = 0; i < Accobj.getCount()-1; i++)
        {
            fin.read(reinterpret_cast <char*> (&Accobj), sizeof(Accobj));
            v.push_back(Accobj);
        }
        fin.close();
        return true;
    }
    else
        return false;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2016, 13:04     Access violation reading location
Посмотрите здесь:

C++ Помогите с ошибкой Access violation reading location 0x1ed1d9f8.
Ошибка: Unhandled exception at 0x772115de in TimeShift.exe: 0xC0000005: Access violation reading location 0x00041000. C++
access violation reading location C++
Access violation reading location C++
Как можно найти итерацию, на которой происходит "access violation reading location"? C++
ошибка Access violation reading location 0x00000066 C++
C++ Массивы указателей и ошибка Access violation reading location
Exception thrown at 0x77D75BCA (ntdll.dll): 0xC0000005: Access violation reading location 0x0000 C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,579
08.06.2016, 14:17     Access violation reading location #2
Убери ios::beg для начала.

Добавлено через 1 минуту
И как ты наперёд определяешь сколько считывать из файла? Что за getCount()?
Yandex
Объявления
08.06.2016, 14:17     Access violation reading location
Ответ Создать тему
Опции темы

Текущее время: 03:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru