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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mukule
0 / 0 / 0
Регистрация: 08.11.2013
Сообщений: 8
#1

AccessViolationException - C++

08.11.2013, 00:40. Просмотров 360. Ответов 4
Метки нет (Все метки)

Помогите пжл, не пойму, в чем проблема?

Выполняется без ошибки:
C++
1
2
3
4
5
6
7
int main()
{
  int i=7;
  int j=i;
  int *iref =&j;
return 0;
}
Выполняется с ошибкой AccessViolationException
C++
1
2
3
4
5
6
7
8
int main()
{
Student st1("Dima", 3, true);
    st1.Print();
    Student st2=st1;
    Student *stref=&st2;
return 0;
}
Остальной код:
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
class Student
{
public:
    char *name;
    int course;
    bool gender;
    Student();//конструктор без параметров
    Student(char *pname, int pcourse, bool pgender)//конструктор с параметрами
    {
        name=pname;
        course=pcourse;
        gender=pgender;
        cout<<"Parameterized constructer has operated"<<endl;
    };
    Student(const Student& ref)//конструктор копирования
    {
        strcpy(name, ref.name);
        course = ref.course;
        gender=ref.gender;
        cout<<"Copying constructer has operated"<<endl;
    };
    ~Student()
    {
        delete[] name;
        delete name,course;
        cout<<"Destructor has operated"<<endl;
    }
};
Причем в том случае, когда выполняется с ошибкой, строчка "Copying constructer has operated" не показывается, но, если убрать строчку
C++
1
Student *stref=&st2;
, то работает, в чем проблема, помогите плз?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2013, 00:40     AccessViolationException
Посмотрите здесь:

При создании территориальной единицы выдает "System.AccessViolationException" - C++
При создании территориальной единицы выдает такую ошибку Описание классов class TPlant { public: static int kolp; int...

Внезапный AccessViolationException - C# WPF
ситуация: никого не трогаю, починаю примус, и вдруг ни с того ни с сего вылазит AccessViolationException. прочел причины возникновения,...

ошибка AccessViolationException - C#
Всем день добрый. Сделал лабораторную в винформе и при отладке все время выдает ошибку AccessViolationException в строке...

.NET 4.x System.AccessViolationException - C#
Есть текстбокс на форме, при изменении текста в нем происходит запрос к бд и заполняется AutocompleteCustomSource. Часто при вводе...

[OpenTK] AccessViolationException в GL.ShaderSource - OpenGL
При загрузке шейдера в методе GL.ShaderSource выдает AccessViolationException: &quot;Attempted to read or write protected memory. This is often...

Исключение System.AccessViolationException - C#
Здравствуйте! Пишу С# приложение под Windows 7 — всё работает стабильно и правильно. Запускаю программку в Windows XP — в коде возникает...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,401
Записей в блоге: 17
08.11.2013, 00:50     AccessViolationException #2
C++
1
2
3
4
5
6
7
Student(char *pname, int pcourse, bool pgender)//конструктор с параметрами
    {
        name=pname;
        course=pcourse;
        gender=pgender;
        cout<<"Parameterized constructer has operated"<<endl;
    };
А память выделить под char* name ?
C++
1
name=pname;
Так нельзя делать в данном случае ... ты присваиваешь указатель а не копируешь данные.
Mukule
0 / 0 / 0
Регистрация: 08.11.2013
Сообщений: 8
08.11.2013, 01:05  [ТС]     AccessViolationException #3
strcpy(name, pname); так тоже не получается или этот метод не выделяет память?

Добавлено через 1 минуту
а нет, так сделал, теперь не работает(

Добавлено через 5 минут
Короче я так понял, что вся проблема в strcpy, а как еще по-другому выделить память?
C++
1
2
Student st2=st1;
cout<<&st1<<" "<<&st2;
и тут память тоже копируется, т.к. вывел разные участки.
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,401
Записей в блоге: 17
08.11.2013, 01:09     AccessViolationException #4
C++
1
2
3
4
5
6
7
   Student(char *pname, int pcourse, bool pgender)//конструктор с параметрами
    {
        name= new char[strlen(pname)+1];
        strcpy(name, pcourse);
 
        // ....
    };
Добавлено через 1 минуту
C++
1
2
3
4
5
    ~Student()
    {
        delete[] name;
        delete name,course;
        cout<<"Destructor has operated"<<endl;
Вообще бредотина, берись за книги ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 01:27     AccessViolationException
Еще ссылки по теме:

Visual Studio 2010 AccessViolationException - Visual Studio
создаю новый проект using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

System.AccessViolationException при передвижении Формы - C++/CLI
Есть форма на ней три элемента picturebox в которых отрисовка происходит по таймеру. При передвижении окна появляется исключение: ...

Функция SetSystemTime Не отрабатывает - System.AccessViolationException не обработано - Visual Basic .NET
Добрый день! Помогите плиз нубу - пытаюсь написать программку чтоб задавалось системное время формата(##.##.##) из переданной строковой...

Можно ли игнорировать AccessViolationException брошенный из не управляемой dll? - C#
Почему то у меня бросается исключения из dll &quot;Unhandled Exception: System.AccessViolationException: Attempted to read or write protected...


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

Или воспользуйтесь поиском по форуму:
Mukule
0 / 0 / 0
Регистрация: 08.11.2013
Сообщений: 8
08.11.2013, 01:27  [ТС]     AccessViolationException #5
уже исправил)
Yandex
Объявления
08.11.2013, 01:27     AccessViolationException
Ответ Создать тему
Опции темы

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