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

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

Войти
Регистрация
Восстановить пароль
 
cskurt
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 14
#1

Дестрктор - C++

13.03.2013, 13:53. Просмотров 215. Ответов 3
Метки нет (Все метки)

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
#include <iostream>
using namespace std;
class Matrix
{
    public:
    int **mass1,**mass2,i;
 
    Matrix(int n,int m)
    {
    mass1=(int **)malloc(n*sizeof(int*));
    for (i=0;i<n;i++) mass1[i]=(int*)malloc(m*sizeof(int));
    }
 
    Matrix()
    {
    mass2=(int **)malloc(3*sizeof(int*));
    for (i=0;i<3;i++) mass2[i]=(int*)malloc(3*sizeof(int));
    }
 
     ~Matrix()
    {
    /* for (int i = 0; i < 3; ++i)
        {
        free(mass2[i]);
        }
        free(mass2);
        for (int i = 0; i < 4; ++i)
        {
        free(mass1[i]);
        }
        free(mass1);*/
    }
     };
 
void main()
{
    int n,m;
    n=4;
    m=4;
    Matrix c1(n,m);
    Matrix c2;
    system("pause");
    }
Не сочтите за повтор, но решил немного упростить код для наглядности и вновь спросить, так как второй день уже долблюсь в него и решения не найду нигде.

Есть 2 конструктора, которые создают 2 массива, надо их потом удалить в деструкторе, оба, код деструктора в комментах, так как при обработке вылетаю с ошибкой, может кто объяснить почему на примере? Так как при вызове одного конструктора всё нормально, при вызове двух я в ауте. Я чего-то не понимаю в вызовах конструктора походу, так как решения на это найти не могу просто. Или хотя бы пример как мне их тогда вызывать (констркторы) что бы потом удалять данные или еще как. Просто информации в и-нете для двух конструкторов и потом одного деструктора (порядком удаления данных) я так и не нашел.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
13.03.2013, 14:01     Дестрктор #2
в одном случае создаёте mass1(конструктор с 2 параметрами), во втором mass2(конструктор по умолчанию). А дестркутор удаляет оба массива, хотя в каждом случае выделяется память только под один массив.
Вам следует использовать один массив и добавить функцию resize для изменения его размера.
cskurt
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 14
13.03.2013, 14:01  [ТС]     Дестрктор #3
решение нашли в пред теме, можно удалить тут. Поддерживает ли форум что бы я сам удалил? Или ждать модератора?
Croessmah
13.03.2013, 14:06     Дестрктор
  #4
 Комментарий модератора 
Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать тему в одном разделе.

Тема закрыта!
Yandex
Объявления
13.03.2013, 14:06     Дестрктор
Закрытая тема Создать тему
Опции темы

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