Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Dahakan
0 / 0 / 0
Регистрация: 17.12.2015
Сообщений: 2
1

Необработанное исключение по адресу (msvcp110d.dll): нарушение прав досупа при записи

17.12.2015, 12:46. Просмотров 348. Ответов 2
Метки нет (Все метки)

Доброго времени суток. Надеюсь на вашу помощь в решении моей проблемы. Я имею две функции, первая считывает и перезаписывает в бинарном режиме файл добавляя в его начало структуру вида:
C++
1
2
3
4
5
struct My_Struct
{
    string name;
    int type;
};
вот сама эта функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
bool func1(string pathToFile)
{
    My_Struct info;
    info.name = FileName(pathToFile);
    info.type = 1;
    char x;
 
    ifstream out(pathToFile, ios::binary|ios::in);
    if (!out)
    {
        return true;
    }
 
    pathToFile.append(".sec");
 
    ofstream sec(pathToFile, ios::binary|ios::out);
    if (!sec)
    {
        return true;
    }
    
    sec.write((char*)&info,sizeof info);
 
    while(true)
    {
        out.read((char*)&x,sizeof x);
        if(out.eof()) break;
        sec.write((char*)&x,sizeof x);
    }
 
    out.close();
    sec.close();
 
    return false;
}
Вторая же функция считывает созданный первой функцией файл извлекает из него записанную вначале структуру и перезаписывает весь остальной файл, вот она сама:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
bool func2(string pathToFile)
{
    My_Struct info;
    char x;
 
    ifstream sec(pathToFile, ios::binary|ios::in);
    if (!sec)
    {
        return true;
    }
 
    sec.read((char*)&info,sizeof info);
 
    pathToFile.append(".dec");
    ofstream in(pathToFile, ios::binary|ios::out);
    if (!in)
    {
        return true;
    }
 
    while(true)
    {
        sec.read((char*)&x,sizeof x);
        if(sec.eof()) break;
        in.write((char*)&x,sizeof x);
    }
 
    in.close();
    sec.close();
 
    return false;
}
при выполнении этих функций кодом:
C++
1
2
3
4
5
6
7
8
9
10
11
int _tmain(int argc, _TCHAR* argv[])
{
    string s_file_name_1 = "file1.txt";
    string s_file_name_2 = "file1.txt.sec";
 
    func1(s_file_name_1);
    func2(s_file_name_2);
 
    _getch();
    return 0;
}
функция номер два выдает следующую ошибку:
Необработанное исключение по адресу (msvcp110d.dll): нарушение прав досупа при записи

Причем она возникает при выходе из самой функции, если из второй функции убрать 12 строку считывающую структуру то никаких ошибок не возникает. Что же я делаю не так?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2015, 12:46
Ответы с готовыми решениями:

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость...

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll)...

Необработанное исключение по адресу 0x001B3371 в XXX.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDF
Делал консольную змейку и столкнулся вот с такой проблемой. void stena(char **arr) { int y...

Необработанное исключение по адресу 0x00ED4891 в strings.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC
Программа толком не написан, проверял ранд и возникли проблемы. Ф-ция ранд генерирует одно и тоже...

Необработанное исключение по адресу 0x00105FD7 в Динамические структуры: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCE09
Необработанное исключение по адресу 0x00105FD7 в Динамические структуры.exe: 0xC0000005: нарушение...

2
Tulosba
:)
Эксперт С++
4752 / 3246 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.12.2015, 12:51 2
Dahakan, если хочешь писать/читать через write/read как сейчас, то замени string в структуре на массив char'ов:
C++
1
2
3
4
5
struct My_Struct
{
    char name[100]; // задай максимальный размер
    int type;
};
Но если оставишь std::string надо делать иначе и по уму
0
Dahakan
0 / 0 / 0
Регистрация: 17.12.2015
Сообщений: 2
17.12.2015, 13:11  [ТС] 3
Цель такая: первая функция шифрует файл а в структуру сохраняет данный об исходном состоянии файла (например имя файла) а вторая расшифровывает и восстанавливает файл в его первоначальном виде. Так как обе функции в качестве входных параметров принимают string'и то и структуре я решил использовать тот же тип данных тем более, что для меня работа со string'ами выглядит проще чем с массивом char'ов.
Обязательно попробую заменить string в структуре на char'ы поэтому вопрос может тогда стоит все string'и заменить на массивы char'ов?
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2015, 13:11

Необработанное исключение по адресу 0x008B94C5. 0xC0000005: нарушение прав доступа при чтении по
Здравствуйте! Функция должна искать локальные минимумы массива. То есть это элементы,которые меньше...

Необработанное исключение по адресу 0x00E730CD в ConsoleApplication18.exe: 0xC0000005: нарушение прав доступа при чтении
Задана целочисленная динамическая матрица M. Элементы этой матрицы, без остатка делящиеся на 6,...

Вызвано исключение по адресу 0x003F2357 в Лабораторна 15.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x
Что это такое и как это исправить? Вот фрагмент кода где и есть проблема: ... int size = 9;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.