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

Не запускается проект: нарушение прав доступа при чтении - C++

Восстановить пароль Регистрация
 
cHuVbaka
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 120
13.04.2014, 20:38     Не запускается проект: нарушение прав доступа при чтении #1
Код
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
using namespace std;
 
class Book
{
    char* _surname; // фамилия автора
 
    char* _name; // имя автора
 
    char* _patronymic; // отчество автора
 
    int _year; // год издательства
 
    char* _book; // название книги
 
    int _count; // количество страниц
public:
 
    Book(char* surname, char* name, char* patronymic) // конструктор класса Книга (принимает 3 параметра)
        :_count(0), _year(0)
    {
        this->SetSurname(surname);
 
        this->SetName(name);
 
        this->SetPatronymic(patronymic);
 
        cout <<"Вызов конструктора!!!"<<endl;
    }
 
    ~Book(void) // деструктор (очищает всю занятую память)
    {
        if(this->_surname != NULL)
            delete[] this->_surname;
 
        if(this->_name != NULL)
            delete[] this->_name;
 
        if(this->_patronymic != NULL)
            delete[] this->_patronymic;
 
        if(this->_book != NULL)
            delete[] this->_book;
        cout <<"Вызов деструктора!!!"<<endl;
    }
 
    void SetSurname(char* surname) // метод задает фамилию автора
    {
        if(this->_surname != NULL) // если фамилия не пустая
            delete[] this->_surname; // удаляем занятую память
 
        this->_surname = _strdup(surname); // выдиляем и копируем новое значение
    }
 
    void SetName(char* name)
    {
        if(this->_name != NULL)
            delete[] this->_name;
 
        this->_name = _strdup(name);
    }
 
    void SetPatronymic(char* patronymic)
    {
        if(this->_patronymic != NULL)
            delete[] this->_patronymic;
 
        this->_patronymic = _strdup(patronymic);
    }
 
    void SetBook(char* book)
    {
        if(this->_book != NULL)
            delete[] this->_book;
 
        this->_book = _strdup(book);
    }
 
    void SetYear(int year)
    {
        this->_year = year;
    }
 
    void SetCount(int count)
    {
        this->_count = count;
    }
 
    const char* GetSurname()const
    {
        return this->_surname;
    }
 
    const char* GetName()const
    {
        return this->_name;
    }
 
    const char* GetPatronymic()const
    {
        return this->_patronymic;
    }
 
    const char* GetPost()const
    {
        return this->_book;
    }
 
    const int GetYear()const
    {
        return this->_year;
    }
 
    const int GetCount()const
    {
        return this->_count;
    }
};
 
int main()
{
    setlocale(LC_ALL, "RUS"); // рус язык
 
    Book* book = new Book("Syrname", "Name", "Patronymic");
 
    book->SetYear(1980);
 
    book->SetCount(3000);
 
    cout << book->GetSurname() << " " << book->GetName() <<endl;
 
    return 0;
}
Ошибка
Миниатюры
Не запускается проект: нарушение прав доступа при чтении  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 20:38     Не запускается проект: нарушение прав доступа при чтении
Посмотрите здесь:

Нарушение прав доступа при чтении C++
Нарушение прав доступа при чтении C++
C++ Нарушение прав доступа при чтении
Нарушение прав доступа при чтении C++
C++ Нарушение прав доступа при чтении
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cHuVbaka
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 120
13.04.2014, 21:31  [ТС]     Не запускается проект: нарушение прав доступа при чтении #2
ребят, попробуйте кто-то запустить у себя
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,181
Завершенные тесты: 1
13.04.2014, 21:49     Не запускается проект: нарушение прав доступа при чтении #3
Когда Вы вызываете конструктор,
то память под переменные не выделена,
но указатели не обязаны быть NULL.
Соответственно, операция delete вызовет ошибку.
newbie666
Заблокирован
13.04.2014, 21:55     Не запускается проект: нарушение прав доступа при чтении #4
всё работает
Миниатюры
Не запускается проект: нарушение прав доступа при чтении  
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,181
Завершенные тесты: 1
13.04.2014, 22:08     Не запускается проект: нарушение прав доступа при чтении #5
Цитата Сообщение от newbie666 Посмотреть сообщение
всё работает
Да, если компилятор заполняет по умолчанию указатели нулями.
newbie666
Заблокирован
13.04.2014, 22:15     Не запускается проект: нарушение прав доступа при чтении #6
Цитата Сообщение от cHuVbaka Посмотреть сообщение
this->SetSurname(surname);
this->SetName(name);
this->SetPatronymic(patronymic);
можешь объяснить зачем ты тут пишешь this?
cHuVbaka
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 120
13.04.2014, 22:47  [ТС]     Не запускается проект: нарушение прав доступа при чтении #7
разве компилятор может заполнить указатель?
newbie666
Заблокирован
13.04.2014, 23:16     Не запускается проект: нарушение прав доступа при чтении #8
Цитата Сообщение от cHuVbaka Посмотреть сообщение
разве компилятор может заполнить указатель?
ты вообще о чем?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.04.2014, 00:44     Не запускается проект: нарушение прав доступа при чтении #9
Цитата Сообщение от newbie666 Посмотреть сообщение
ты вообще о чем?
О неинициализированных указателях.
Цитата Сообщение от cHuVbaka Посмотреть сообщение
разве компилятор может заполнить указатель?
От компилятора зависит. Какие-то обнуляют неинициализированные указатели, какие-то нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2014, 00:50     Не запускается проект: нарушение прав доступа при чтении
Еще ссылки по теме:

C++ Нарушение прав доступа при чтении
Нарушение прав доступа при чтении.Отладка C++
C++ Нарушение прав доступа при чтении

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.04.2014, 00:50     Не запускается проект: нарушение прав доступа при чтении #10
...
Миниатюры
Не запускается проект: нарушение прав доступа при чтении   Не запускается проект: нарушение прав доступа при чтении  
Yandex
Объявления
14.04.2014, 00:50     Не запускается проект: нарушение прав доступа при чтении
Ответ Создать тему
Опции темы

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