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

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

Войти
Регистрация
Восстановить пароль
 
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
#1

Очистка памяти - C++

19.04.2013, 23:19. Просмотров 562. Ответов 6
Метки нет (Все метки)

Как правильно очистить память в массиве классов

Вот код конструктора, выделяющего память, и деструктора. Выдает ошибку в самом конце выполнения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Player::Player(Game &FIRST_SKILL){
    int i;
 
    money = 100;
    rating = 0;
    skills = new Game*[6];
    skills[0] = &FIRST_SKILL;
 
    for (i = 1; i < 6; ++i)
        skills[i] = NULL;
    for (i = 0; i < 6; ++i)
        master[i] = 0;
}
 
Player::~Player(){
        delete[] skills;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12675 / 7183 / 801
Регистрация: 27.09.2012
Сообщений: 17,709
Записей в блоге: 2
Завершенные тесты: 1
19.04.2013, 23:32     Очистка памяти #2
Конструктор копирования корректный имеется?
А то может у Вас просто где-то создается копия и потом удаляется, удаляя с собой skills
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
19.04.2013, 23:35     Очистка памяти #3

Не по теме:

Правильно это делается вот так:

C++
1
2
3
4
5
class Player {
    /* ... */
private:
    std::vector< std::XXX_ptr<Game> > skills; // XXX <= auto | unique | shared
};
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
19.04.2013, 23:39  [ТС]     Очистка памяти #4
Цитата Сообщение от Croessmah Посмотреть сообщение
Конструктор копирования корректный имеется?
Конструкторов копирования нет

Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
C++
1
2
    std::vector< std::XXX_ptr<Game> > skills; // XXX <= auto | unique | shared
};
Дело в том, что с вектором я еще пока не умею работать
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
19.04.2013, 23:56     Очистка памяти #5
Цитата Сообщение от Seroga7 Посмотреть сообщение
Дело в том, что с вектором я еще пока не умею работать
Окей — std::array.

"Не умею работать" — это повод научиться работать, а не забить и отложить.
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
20.04.2013, 00:09  [ТС]     Очистка памяти #6
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
"Не умею работать" — это повод научиться работать, а не забить и отложить.
Согласен, я и научусь. Просто сейчас мне срочно нужно доделать программу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 00:54     Очистка памяти
Еще ссылки по теме:

C++ Очистка памяти
C++ Очистка памяти delete[];
очистка памяти C++
C++ Ссылки и очистка памяти
C++ Очистка памяти

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

Или воспользуйтесь поиском по форуму:
Nuqlear
5 / 5 / 0
Регистрация: 05.11.2011
Сообщений: 17
20.04.2013, 00:54     Очистка памяти #7
skills это у вас указатель на указатель на какой-то тип же?
Покажите деструктор этого типа, может в нем проблема.
Yandex
Объявления
20.04.2013, 00:54     Очистка памяти
Ответ Создать тему
Опции темы

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