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

Heap corruption detected: after normal block (#153) at 0x00345730 - C++

Восстановить пароль Регистрация
 
arz
Сообщений: n/a
02.02.2011, 11:05     Heap corruption detected: after normal block (#153) at 0x00345730 #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef COW_H__
#define COW_H__
 
 
class Cow
{
    char name[20];
    char *hobby;
    double weight;
    static int num;// chislo obektov
public:
    Cow();
    Cow(const char * nm, const char *ho, double wt);
    Cow(const Cow & c);
    ~Cow();
    Cow & operator=(const Cow & c);
    void ShowCow() const;
    static int HowMany();
};
#endif
*****************************************
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
#include <iostream>
using namespace std;
#include "cow.h"
#include <cstring>
 
 
int Cow::num = 0;
int Cow::HowMany()
{
    return num;
}
Cow::Cow() //konstruktor po ymolchaniu
{
    cout << "Objekt num sozdan " << num++ << endl;
    name[0] = '\0';
    hobby = 0;
    weight = 0.0;
}
 
Cow::Cow(const char * nm, const char *ho, double wt)// konstruktor
{
    cout << "Objekt num sozdan " << num++ << endl;
    strcpy(name, nm);
    hobby = new char[strlen(ho + 1)];
    strcpy(hobby, ho);
    weight = wt;
    
}
 
Cow::~Cow()// destruktir
{
    cout << "Objekt num udalen " << --num << endl;
    delete [] hobby;
}
 
Cow & Cow::operator=(const Cow & c)// function prisvaivaniya
{       
    if (this == &c)
        return *this;
    strcpy(name, c.name);
    delete [] hobby;
    hobby = new char[strlen(c.hobby + 1)];
    strcpy(hobby, c.hobby);     
    return *this;
}
 
void Cow::ShowCow() const
{
    cout << "name " << name << endl;
    cout << "hobby " << hobby << endl;
    cout << "weight " << weight << endl;
}
 
Cow::Cow(const Cow & c)//konstruktor copyrovaniya
{
    cout << "Objekt num sozdan " << num++ << endl;
    strcpy(name, c.name);
    hobby = new char[strlen(c.hobby + 1)];
    strcpy(hobby, c.hobby);
    weight = c.weight;  
}
**********************************
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "cow.h"
#include <iostream>
using namespace std;
 
int main()
{
    Cow rosa("Redrose", "Whiterose", 777.7);
    rosa.ShowCow();
    Cow pion("Redpion", "Whitepion", 7.0);
    pion.ShowCow();
    pion = rosa;
    pion.ShowCow();
    Cow gvozdika = pion;
    gvozdika.ShowCow();
    cout << "Programma ispolsovala " << Cow::HowMany() << " obectov Cow " << endl;
    return 0;
}

Компилятор выдает: HEAP CORRUPTION DETECTED: after normal block (#153) at 0X00345730.
CRT detected that the application wrote to memory after end of heap buffer. Где в этом коде ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2011, 11:05     Heap corruption detected: after normal block (#153) at 0x00345730
Посмотрите здесь:

Heap corruption detected C++
HEAP CORRUPTION DETECTED C++
C++ Heap corruption detected
Heap corruption detected after normal block C++
C++ Heap Corruption detected (
C++ Heap corruption detected
Heap corruption detected C++
C++ Heap Corruption Detected

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
02.02.2011, 11:59     Heap corruption detected: after normal block (#153) at 0x00345730 #2
Попробуйте не так
C++
1
 hobby = new char[strlen(c.hobby + 1)];
а так
C++
1
 hobby = new char[strlen(c.hobby)+ 1];
arz
Сообщений: n/a
02.02.2011, 12:39     Heap corruption detected: after normal block (#153) at 0x00345730 #3
Спасибо большое, NNN777!
Yandex
Объявления
02.02.2011, 12:39     Heap corruption detected: after normal block (#153) at 0x00345730
Ответ Создать тему
Опции темы

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