Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В одномерном массиве, состоящем из n элементов массива, вычислить минимальный элемент массива помогите https://www.cyberforum.ru/ cpp-beginners/ thread113390.html C++ графика в c
помогите плиз, нужна литература по графике в c, в инете ничего толком не нашел...
C++ Где скачать MS Visual C++ ? https://www.cyberforum.ru/ cpp-beginners/ thread113381.html
Дайте ссылку ?
C++ Н-ленточное слияние с метод сортировки Осуществить программную реализацию сортировки информации заданного вида сбаланси-рованным N-ленточным слиянием (в оперативной памяти), используя выбранные, в соответ-ствии с вариантом, из табл. 1... https://www.cyberforum.ru/ cpp-beginners/ thread113376.html
Отсортировать элементы структуры по алфавиту. C++
друзья, не подскажите как отортировать элементы структуры по алфавиту???
C++ Работа с элементами массивов Здраствуйте,форумчане! Просьба решить эти лабораторные задачи.Срочно надо: 1. Ввести массив А. в массив В перенести все элементы массива А имеющие четный индекс и нечетное значение. Массив В... https://www.cyberforum.ru/ cpp-beginners/ thread113298.html
C++ Как печатать переменные типа string в консоли https://www.cyberforum.ru/ cpp-beginners/ thread113261.html
использую _cprintf чтобы выводить данные в консоль, другие операторы у меня почему то не работаю, но не суть проблема в том что _cprintf выводит все кроме переменных string, даже тип char без...
C++ Занести в матрицу данные справа налево
необходимо создать двумерный динамический массив типа char и: занести в него данные сначала справа налево(имеется в виду 1-ая(0-ая) строка),данные в следующую строку слева направо... и так до конца...
C++ Доска Гамильтона https://www.cyberforum.ru/ cpp-beginners/ thread113233.html
Изобразить на экране доску гамильтона с движущимися по ней шариками.Одновременно должны двигаться несколько шариков.Заканчивая движение шарики останавливаются в нижней части доски.Использовать датчик...
C++ Нахождение всех совершенных чисел. Разработать программу и подпрограмму (подпрограммы), выполняющие нахождение всех совершенных чисел из заданных N натуральных (совершенным называется число равное сумме своих делителей, кроме себя... https://www.cyberforum.ru/ cpp-beginners/ thread113230.html
Перемещение элементов списка C++
Создать функцию, которая перемещает наименьший элемент связного списка так,чтобы он стал первым узлом.
C++ Заменить первый и полследний символ на * Написать программу которая выполняет следующие действия над введёным с клавиатуры словом: 1) Заменит первый и полследний символ на * 2) Произвести обмен 1го... https://www.cyberforum.ru/ cpp-beginners/ thread113218.html
2 / 2 / 0
Регистрация: 15.02.2010
Сообщений: 26
0

Зависание на деструкторе. - C++ - Ответ 644070

06.04.2010, 13:55. Показов 1278. Ответов 4
Метки (Все метки)

Всем доброго времени суток!
Проблема такая: есть класс cData в нём статический член staric int amount, при вызове конструктора увеличиваем amount на 1, в деструкторе уменьшаем на 1, получается что то вроде счётчика сущуствующих экземпляров. В другом классе cDataArray есть члены cData *data1 и cData *data2, для них сначало выделяю динамически память спомощью new, потом пытаясь удалить (delete data1) программа виснет на диструкторе. При дебаге ставлю точку останова на конце диструктора, при попытке выйти из него вылетает сообщение от дебагера "Нет исходного кода для текущего места.". В чём проблема и как можно решить?!

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
// Класс cData:
 
class cData // класс дата
{
    int     year; // год 
    short   mounth; // месяц
    short   day; // день
 
    static int amount; // количество экземпляров класса
 
public:
    cData(); // конструктор по умолчанию
    cData(int n_year, short n_mounth, short n_day); // конструктор с параметрами
    cData(const cData &obj); // конструктор копирования
    ~cData(); // деструктор
    bool SetData(int n_year, short n_mounth, short n_day); //изменение значения
    void IncDay(); // инкремент
    string GetStrData(); // возвращает дату в виде строки
    static int GetAmount(); // возвращает количество экземпляров
};
 
cData::~cData()
{
    amount--;
}
 
// Класс cDataArray:
 
class cDataArray
{
    cData *data1; 
    cData *data2;
    bool use_one; // определяет какой из указателей используется
 
public:
    cDataArray();
    cDataArray(int n_amount);
    ~cDataArray();
    void AddElement(int n_year, short n_mounth, short n_day); // добавление элемента в конец
    bool DeleteElement(int num); // удаление элемента по номеру
    bool SetData(int num, int n_year, short n_mounth, short n_day); //изменение значения
    bool IncDay(int num); // инкремент
    string GetStrData(int num); // возвращает дату в виде строки
    int GetAmount(); // возвращает количество экземпляров
};
 
 
//метод в котором удаляю
void cDataArray::AddElement(int n_year, short n_mounth, short n_day)
{
    int i, kol;
 
    if(use_one)
    {
        kol = data1[0].GetAmount();
        data2 = new cData [kol+1];
 
        for(i=0; i < kol; i++)
        {
            data2[i] = data1[i];
        }
        data2[i].SetData(n_year, n_mounth, n_day);
 
        [COLOR="#ff0000"]delete data1;[/COLOR] // тут виснет
 
        use_one = false;
    }
    else
    {
        kol = data2[0].GetAmount();
        data1 = new cData [kol+1];
 
        for(i=0; i < kol; i++)
        {
            data1[i] = data2[i];
        }
        data1[i].SetData(n_year, n_mounth, n_day);
 
        [COLOR="#ff0000"]delete data2;[/COLOR] // тут виснет
 
        use_one = true;
    }
}


Вернуться к обсуждению:
Зависание на деструкторе. C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2010, 13:55
Готовые ответы и решения:

Повисание в деструкторе
Есть такой код: //staff.h class staff abstract { protected: int salary; char* name;...

Ошибка в деструкторе
Когда удаляю объект класса hotel, в деструкторе вызывается delete для поля этого объекта -...

Ошибка в деструкторе
есть базовый абстрактный класс и есть производный от него: #ifndef EMPLOY_H #define EMPLOY_H ...

Ошибка в деструкторе
Программа работает без ошибок и полный её код не выкладываю. Но при выходе из программы получаю вот...

4
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2010, 13:55
Помогаю со студенческими работами здесь

Exception throw в деструкторе
Почему-то происходит выброс при вызове деструктора. Деструктор вызывается в main при завершении...

Классы - ошибка в деструкторе
У меня сейчас такое &quot;задание&quot;: опередить класс длинного целого числа (длинная арифметика), для...

Вылет программы на деструкторе
Здравствуйте, подскажите пожалуйста что не так? Программа не корректно завершается #pragma once...

Оператор delete в деструкторе
Здравствуйте, нужна помощь, есть класс и функция к которую передается этот класс: ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru