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

Чтение/запись бинарного файла: необработаное исключение - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нелинейное уравнение http://www.cyberforum.ru/cpp-beginners/thread1495518.html
Доброго времени суток, форумчане. Помогите пожалуйста решить задачку: Найти все корни функции f(x) на интервале методом хорд с погрешностью 0.001 Всем безоблачного лета :)
C++ Перевод char в int Доброго времени суток. покопался по схожим темам,но так и не нашёл ответа. На вводе с клвиатуры подаётся char-овский массив сстоящийиз цифр. Надо перевести 1-ый элемент int. (например,если первый элемент равен 3, то знаение перменной в int тоже равен 3).Прошу помочь!! http://www.cyberforum.ru/cpp-beginners/thread1495498.html
C++ Считывание файлов в папке с++
Здравствуйте, уважаемые знатоки! Задача простая: есть папка; в папке много файлов; нужно считывать из папки эти файлы и каким-то образом обрабатывать. Хотел использовать следующий код, однако ругается на первую переменную функции FindFirstFile (argument of type "const char *" is incompatible with parametr of type "LPCWSTR") int main() { WIN32_FIND_DATA win; char* buff = new char; ...
Упражнения по с++ C++
Я не так давно начал изучать с++, но столкнулся с проблемой применения знаний. То есть я изучил тему, сделал 1-2 упражнения, которые дают базовое понятие о теме. Но хотелось более обширные выбор задач. Где такое можно найти? Искал в интернете, но ничего дельного не нашел. У вас опыта больше и вы знаете, что лучше, подскажите пожалуйста.
C++ Malloc vs new http://www.cyberforum.ru/cpp-beginners/thread1495414.html
Здравствуйте. Вникаю в ручное управление памятью. Абзац из книги "C++ для профессионалов" не совпадает с моим представлением использования объектов. Тут написано: Foo* myFoo = {Foo*}malloc(sizeof(Foo)); Foo* myOtherFoo = new Foo(); После выполнения этих строк кода как переменная myFoo, так и переменная myOtherFoo будут указывать на области памяти в "куче", которые имею...
C++ Реализовать собственный cin Я короче хочу реализовать собственный cin. Просто оно медленно работает. И в этом проблема. typedef long long ll; struct Cin{ void operator >>(ll &x){ scanf("%lld", &x); } }Cin; подробнее

Показать сообщение отдельно
XpertVision
17 / 17 / 3
Регистрация: 14.06.2012
Сообщений: 146
08.07.2015, 18:00     Чтение/запись бинарного файла: необработаное исключение
Здравствуйте. Есть данный код:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
 
#include <iostream>
#include <string>
#include <cstdlib>
 
using namespace std;
 
struct sItem{
    string strName;
    int iWage;
    int iAmount;
};
 
int main()
{
    sItem Apple, readApple;
 
    cout << "Input name of product: ";
    getline(cin, Apple.strName);
    cout << "Input wage: ";
    cin >> Apple.iWage;
    cout << "Input amount: ";
    cin >> Apple.iAmount;
 
    FILE *fbin;
 
    if ((fbin = fopen("D:\\data.bin", "w+")) == 0)
    {
        cout << "Error! data.bin don't create!\n";
        system("pause");
        return 1;
    }
 
    fwrite(&Apple, sizeof(Apple), 1, fbin);
    fclose(fbin);
 
    if ((fbin = fopen("D:\\data.bin", "r")) == 0)
    {
        cout << "Error! data.bin don't open from read!\n";
        system("pause");
        return 1;
    }
 
    fread(&readApple, sizeof(readApple), 1, fbin);
    fclose(fbin);
 
    cout << "Name: " << readApple.strName << "\n";
    cout << "Wage: " << readApple.iWage << "\n";
    cout << "Amount: " << readApple.iAmount << "\n";
 
    cout << "\n\nWell done!\n";
    system("pause");
    return 0;
}
Программа полностью выполняется, но в момент ее завершение выскакивает данная ошибка: Unhandled exception at 0x5B4BDF62 (msvcp120d.dll) in BinFile.exe: 0xC0000005: Access violation writing location 0xFEEEFEEE.

Если заменить string на char, то проблем нету. Из того, что смог найти, есть допущение, что при закрытии программы вычищается память от всех объектов, включая оба экземпляра структуры. И в этот момент программа думает, что Apple.strName и readApple.strName ссылаются на одно и тоже. В итоге нету возможности вычистить второй string. Вот и ошибка доступа для записи. Но если это так, то разве внутренние переменные структуры не должны быть изолированы от другого кода и связаны лишь со своей структурой? (по аналогии с классами) Буду признателен за разъяснение.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru