Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
arz
0 / 0 / 0
Регистрация: 05.03.2016
#1

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

02.02.2011, 11:05. Просмотров 445. Ответов 2
Метки нет (Все метки)

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. Где в этом коде ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2011, 11:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Heap corruption detected: after normal block (#153) at 0x00345730 (C++):

Heap corruption detected after normal block - C++
выкидывает ошибку при попытке освободить память массива, делаю так: char **Items; ... free(Items);

Heap corruption detected after normal block #980 - C++
Здравствуйте! Нужна ваша помощь. Как я понимаю, ошибка возникает во время работы функции Deriv(), но мне не понятно почему она возникает....

Найти причины возникновения ошибки "heap corruption detected after normal block #331" и исправить эту ошибку - C++
добрый день,нужна ваша помощь. при выводе массива выдает такую ошибку &quot;heap corruption detected after normal block #331&quot;, подскажите где...

Heap corruption detected - C++
Возникает эта ошибка при выполнении функции Strings::Append (строка 81, в меню это пункт 3). Входные данные на всякий случай прикрепила....

Heap Corruption Detected - C++
Выдает ошибку HEAP CORRUPTION DETECTED, судя по всему где то ошиблась с распределением памяти Предполагаю, что ошибка прячется в районе...

Heap corruption detected - C++
Heap corruption на строке 93 при первом же выполнении цикла. Из-за чего? #include &lt;locale.h&gt; // для возможности вывода кириллицы ...

2
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
02.02.2011, 11:59 #2
Попробуйте не так
C++
1
 hobby = new char[strlen(c.hobby + 1)];
а так
C++
1
 hobby = new char[strlen(c.hobby)+ 1];
1
arz
0 / 0 / 0
Регистрация: 05.03.2016
02.02.2011, 12:39 #3
Спасибо большое, NNN777!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2011, 12:39
Привет! Вот еще темы с ответами:

Heap Corruption detected ( - C++
что не правильно? запускаю и ошибка вылетает как на предидущей картинке template&lt;typename TT&gt; class Matrix { public:...

Heap corruption detected - C++
При попытке очистить память выдает &quot;Heap corruption detected&quot;. Помогите пожалуйста( // labanext.cpp : Defines the entry point for the...

heap corruption detected - C++
имеется класс CStr - строка, в нём есть конструктор CStr CStr::CStr(char *s) { length = 0; while (s) length++; str = new...

Heap corruption detected - C++
Ошибка возникает после отработки программы Заголовочный файл: #pragma once #include&lt;iostream&gt; #include&lt;valarray&gt; ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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