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

Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.90
pun4er
6 / 6 / 1
Регистрация: 06.10.2010
Сообщений: 122
06.10.2011, 15:11     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #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
#include<iostream>
#include<conio.h>
#include<string>
#include<stdlib.h>
using namespace std;
 
class Goods
{
    char* name;
    char *date;
    double price;
    int amount;
    long num;
    public:
    Goods();
    Goods(const Goods& ob);
    Goods(char* name1,char* date1,double price1,int amount1,long num1)
    {
        strcpy(name,name1);
        strcpy(date,date1);
        price=price1;
        amount=amount1;
        num=num1;
    }
    void show();
    //~Goods();
 
};
 
Goods::Goods(const Goods&ob)
{
    name=(char*)malloc(strlen(ob.name)+1); //косяк?
    date=(char*)malloc(strlen(ob.date)+1);
    strcpy(name,ob.name);
    strcpy(date,ob.date);
    price=ob.price;
    amount=ob.amount;
    num=ob.num;
    free(name);
    free(date);
}
 
void Goods::show()
{
    cout<<"Information about goods.\n"<<"Name: "<<name<<endl<<"Registration date: "<<date<<endl<<"Price: "<<price<<endl<<"Amount: "<<amount<<endl<<"Waybill's number: "<<num<<endl<<"Press Enter for the quit...\n";
}
 
void main()
{
    Goods st("Hunter's Gun","10.09.2011",10000,2,1658);
    Goods st1=st;
    getch();
}
компилятор выдает ошибку (см название темы), в чем может быть проблема? я так подозреваю, что в выделении динамической памяти накосячил.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2011, 15:11     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Посмотрите здесь:

Необработанное исключение в "0x1027c9c7 (msvcr100d.dll)" в "gh.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee". C++
C++ Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004".
Необработанное исключение в "0x0fc1d484 (msvcr100d.dll)" в "1.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00aee0af" C++
Необработанное исключение в "0x00414558" в "467.exe": 0xC0000005: Нарушение прав доступа при чтении "0xabababbb" C++
C++ Необработанное исключение в "0x01082855" в "sort.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
06.10.2011, 15:15     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #2
free(name);
free(date);
выдели эту задачу в отдельную функцию
Haster
инженер-системотехник
 Аватар для Haster
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
06.10.2011, 15:18     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #3
У тебя в конструкторе Goods(char* name1,char* date1,double price1,int amount1,long num1)
память не выделяется под name и date, а ты пытаешься по этим указателям строки записывать.

Вот конструктор копирования у тебя правильно начинается, только не понятно, зачем в конце вызываешь функции free ))
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
06.10.2011, 15:19     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #4
pun4er, выделяете память под переменную и потом сразу ее освобождаете. Соответственно, ее использовать уже нельзя. Думаю что освобождение нужно делать в деструкторе и начале конструктора копирования.
pun4er
6 / 6 / 1
Регистрация: 06.10.2010
Сообщений: 122
06.10.2011, 15:20  [ТС]     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #5
сейчас попробую, спасибо
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
06.10.2011, 15:22     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #6
Да, и Haster правильно заметил.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
Goods(char* name1,char* date1,double price1,int amount1,long num1)
        {
                name=(char*)malloc(strlen(name1)+1); //косяк?
                date=(char*)malloc(strlen(date1)+1);
                strcpy(name,name1);
                strcpy(date,date1);
                price=price1;
                amount=amount1;
                num=num1;
        }
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
06.10.2011, 15:22     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #7
не знаю насколько это принципиально, но чем new\delete не устраивает?
pun4er
6 / 6 / 1
Регистрация: 06.10.2010
Сообщений: 122
06.10.2011, 15:25  [ТС]     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #8
Цитата Сообщение от alkagolik Посмотреть сообщение
не знаю насколько это принципиально, но чем new\delete не устраивает?
нас пока только так так учили)
переделал код
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
#include<iostream>
#include<conio.h>
#include<string>
#include<stdlib.h>
using namespace std;
 
class Goods
{
    char* name;
    char* date;
    double price;
    int amount;
    long num;
    public:
    Goods();
    Goods(const Goods& ob);
    Goods(char* name1,char* date1,double price1,int amount1,long num1)
    {
        name1=(char*)malloc(strlen(name1)+1);
        date1=(char*)malloc(strlen(date1)+1);
        strcpy(name,name1);
        strcpy(date,date1);
        price=price1;
        amount=amount1;
        num=num1;
    }
    void show();
    ~Goods(){free(name);free(date);}
 
};
 
Goods::Goods(const Goods&ob)
{
    name=(char*)malloc(strlen(ob.name)+1);
    date=(char*)malloc(strlen(ob.date)+1);
    strcpy(name,ob.name);
    strcpy(date,ob.date);
    price=ob.price;
    amount=ob.amount;
    num=ob.num;
    
}
 
void Goods::show()
{
    cout<<"Information about goods.\n"<<"Name: "<<name<<endl<<"Registration date: "<<date<<endl<<"Price: "<<price<<endl<<"Amount: "<<amount<<endl<<"Waybill's number: "<<num<<endl<<"Press Enter for the quit...\n";
}
 
void main()
{
    Goods st("Hunter's Gun","10.09.2011",10000,2,1658);
    Goods st1=st;
    getch();
}
все равно ошибка. или я не так переделал?
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
06.10.2011, 15:26     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #9
Вместо
C++
1
2
name1=(char*)malloc(strlen(name1)+1);
date1=(char*)malloc(strlen(date1)+1);
надо
C++
1
2
name=(char*)malloc(strlen(name1)+1);
date=(char*)malloc(strlen(date1)+1);
Haster
инженер-системотехник
 Аватар для Haster
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
06.10.2011, 15:30     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #10
Ну да, с malloc какая-то помесь С++ и Си получается ))
В будущем, конечно, лучше new использовать - как я понимаю - это безопасней
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.10.2011, 15:30     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Еще ссылки по теме:

C++ Необработанное исключение в "0x013f2b22" в "123.exe": 0xC0000005: Нарушение прав доступа при записи "0xfdfdfdfd"
C++ Необработанное исключение в "0x776315de" в "c++1.exe": 0xC0000005: Нарушение прав доступа при записи "0x40e000
C++ Необработанное исключение в "0x104b2288" в "Matrix.exe": 0xC0000005: Нарушение прав доступа при записи "0xcdcd

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

Или воспользуйтесь поиском по форуму:
pun4er
6 / 6 / 1
Регистрация: 06.10.2010
Сообщений: 122
06.10.2011, 15:30  [ТС]     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". #11
Заработало! Всем огромное спасибо, кто обратил внимание на мою проблему и помог.
Yandex
Объявления
06.10.2011, 15:30     Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Ответ Создать тему
Опции темы

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