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

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

Войти
Регистрация
Восстановить пароль
 
Maksumko
12 / 12 / 4
Регистрация: 13.06.2015
Сообщений: 60
#1

ошибка Run-Time Check Failure #2 - C++

13.07.2015, 20:05. Просмотров 236. Ответов 2
Метки нет (Все метки)

под конец програмки освобождал память и ошибка пропадала но происходило аварийное завершение ( подскажите где проблема .

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
class publication
{
protected:
    string name;
    float price;
public:
    publication() :name("N/A"), price(0.0)
    {}
    virtual void setData()
    {
        cout << "\nВведите Название -> ";
        cin >> name;
        cin.ignore();
        cout << "\nВведите цену     -> ";
        cin >> price;
    }
    virtual void getData()const
    {
        cout << "\nНазвание книги : " << name
            << "\nЦена           : " << price;
    }
};
 
class book : public publication
{
private:
    int countPage;
public:
    book() :publication(), countPage(0)
    {}
 
    void setData()
    {
        publication::setData();
        cout << "\nВведите количество страниц -> ";
        cin >> countPage;
    }
    void getData()const
    {
        publication::getData();
        cout << "\nKоличество страниц : " << countPage;
    }
};
class audio : public publication
{
private:
    int hour;
    int minutes;
    int secondes;
public:
    audio() :publication(), hour(0), minutes(0), secondes(0)
    {}
    audio(int times)
    {
        if (times >= 3600)
        {
            minutes = times / 60;
            secondes = times - (minutes * 60);
        }
        if (minutes >= 60)
        {
            hour = minutes / 60;
            minutes = minutes - (hour * 60);
        }
    }
 
    void setData()
    {
        char tmpSymbol = '\x0';
        publication::setData();
        cout << "\nВведите продолжительность книги h:m:s -> ";
        cin >> hour >> tmpSymbol >> minutes >> tmpSymbol >> secondes;
    }
    void getData()const
    {
        publication::getData();
        cout << "\nПродолжительность книги h:m:s : "
            << hour << ":" << minutes << ":" << secondes;
    }
};
 
void addNewBook(publication** arr, int countBook);
void getAllBook(publication** arr, int countBook);
 
int main()
{
    setlocale(LC_ALL, "rus");
    int countBook = 0;
 
    cout << "\nСколько будет книг -> ";
    cin >> countBook;
 
    publication* pPublic = new publication[countBook];
    
    addNewBook(&pPublic, countBook);
    getAllBook(&pPublic, countBook);
 
 
    cout << "\n\n";
    return 0;
}
 
void addNewBook(publication** arr, int countBook)
{
    char tmpSymbol;
 
    for (int i = 0; i < countBook; i++)
    {
        cout << "\nУказать Аудио книгу или обычню a = audio | j = just book -> ";
        cin >> tmpSymbol;
 
        if (tmpSymbol == 'a')
        {
            arr[i] = new audio;
            arr[i]->setData();
        }
        if (tmpSymbol == 'j')
        {
            arr[i] = new book;
            arr[i]->setData();
        }
    }
}
void getAllBook(publication** arr, int countBook)
{
    cout << "\n\n---------------------------------------\n";
    for (int i = 0; i < countBook; i++)
    {
        arr[i]->getData();
        cout << "\n\n---------------------------------------\n";
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2015, 20:05     ошибка Run-Time Check Failure #2
Посмотрите здесь:
Ошибка Run-Time Check Failure #2 - S C++
Ошибка в проге. Run-Time Check Failure #3 C++
C++ Ошибка Run-Time Check Failure #3 - The variable 'y' is being used without being initialized
C++ Ошибка: Run-Time Check Failure #3 - The variable 'zero' is being used without being initialized.
C++ Ошибка: Run-time Check Failure #3-The variable 'k' is being used without being defined
Ошибка Run-Time Check Failure #3 - The variable 'k' is being used without being initialized C++
Ошибка Debug error. Run-time check failure #2. C++ C++
C++ Ошибка: Run-Time Check Failure #3 - The variable 'i' is being used without being initialized
Ошибка: Run-time check failure: variable 'C' is being used without being initialized C++
C++ Ошибка Run-Time Check Failure #3 - The variable 'chcount' is being used without being initialized.
C++ Ошибка Run-Time Check Failure #2 - Stack around the variable 'B' was corrupted
C++ Ошибка при записи массива Run-Time Check Failure #2

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
шКодер самоучка
1813 / 1614 / 588
Регистрация: 09.10.2013
Сообщений: 3,618
Записей в блоге: 6
Завершенные тесты: 2
13.07.2015, 20:29     ошибка Run-Time Check Failure #2 #2
Maksumko, Вы создаете массив публикаций, но внутри функций addNewBook и getAllBook работаете с ним как массивом указателей на публикации
пофиксить можно объявив pPublic как массив указателей:
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
#include <algorithm>
//...
// Функтор для удаления элементов
template<typename Pointer>
struct deleter{
    void operator(Pointer& ptr) {
        if (ptr) {
            delete ptr;
            ptr = NULL;
        }
    }
};
int main()
{
    setlocale(LC_ALL, "rus");
    int countBook = 0;
 
    cout << "\nСколько будет книг -> ";
    cin >> countBook;
 
    publication** pPublic = new publication*[countBook];
    // обнуляем массив указателей
    std::fill_n(pPublic, countBook, NULL);
    
    addNewBook(pPublic, countBook);
    getAllBook(pPublic, countBook);
 
    // освобождаем память
    std::for_each(pPublic, pPublic + countBook,
        deleter<publication*>());
    delete [] pPublic;
    cout << "\n\n";
    return 0;
}
//...
Maksumko
12 / 12 / 4
Регистрация: 13.06.2015
Сообщений: 60
13.07.2015, 20:29  [ТС]     ошибка Run-Time Check Failure #2 #3
ясненько
Ответ Создать тему
Опции темы

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