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

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

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

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

19.04.2013, 23:19. Просмотров 593. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 23:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Очистка памяти (C++):

Очистка памяти - C++
Вот сделал лабу и все работает отлично, но осталось последнее new выделяет память мне нужно добавить функцию которая будет вызыватся в...

Очистка памяти - C++
Подскажите пожалуйста что не так делаю, создаю массив лейблов: TLabel **Labels; Labels = new TLabel*; for(int i = 0; i &lt; rabot +...

Очистка памяти - C++
Цель: Написать программу, которая читает текст из файла и записывает в новый файл те слова, которые содержат буквы, введенные с...

Очистка памяти - C++
При выполнении программы, память приложения растёт, а она должна быть неизменной. int main() { setlocale(LC_ALL, &quot;Russian&quot;); ...

очистка памяти - C++
в данном случае деструктор очистит всё, или нет? #include &quot;base.h&quot; #include &lt;cstdlib&gt; #include &lt;ctime&gt; base::base(int x,int y) { ...

Очистка памяти массива (С++) - C++
Не получается очистить память массива. По моему коду, по завершении программы выдаётся ошибка &quot;попытка очистки памяти после записи её в...

6
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
19.04.2013, 23:32 #2
Конструктор копирования корректный имеется?
А то может у Вас просто где-то создается копия и потом удаляется, удаляя с собой skills
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 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
};
0
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
};
Дело в том, что с вектором я еще пока не умею работать
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
19.04.2013, 23:56 #5
Цитата Сообщение от Seroga7 Посмотреть сообщение
Дело в том, что с вектором я еще пока не умею работать
Окей — std::array.

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

Очистка памяти delete[]; - C++
Есть функция ввида: void loltest(int md3) { char* randChars; int cCount; if(md3 &lt;= 0) cCount = 13; ...

Ссылки и очистка памяти - C++
Здравствуйте! Если я создаю ссылку и присваиваю ей значение (константу или нет) должен я как и с указателями заботится об памяти? ...

Vector, очистка памяти - C++
У меня есть вектор, который состоит из объектов типа класс. После выполнения данного блока мои объекты удаляются(вызываются ихние...

Указатели и очистка памяти - C++
Возник интересный вопрос... class Test { int a; }; class Test1 : public Test { int b, c; }; int main() { Test1 *t = new Test1; ...


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

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

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