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

new delete - C++

Восстановить пароль Регистрация
 
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
24.03.2011, 11:43     new delete #1
здраствуйте! назрел вопрос

class cls1 {
...
...
}

class cls2 {
...
cls1 *pt = new cls1();
...
}

void main(...) {
...
cls2 *pt = new cls2();
...
delete pt;
}

я так понимаю класс cls1 повиснет где то в памяти?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2011, 11:43     new delete
Посмотрите здесь:

C++ delete this
C++ delete и delete[]
"delete [] a, b;" эквивалентно "delete [] a; delete [] b;"? C++
C++ delete[]
C++ delete[]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 12:42     new delete #2
Да, так и есть.
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 12:56     new delete #3
Цитата Сообщение от pito211 Посмотреть сообщение
class cls2 {
...
cls1 *pt = new cls1();
...
}
ну, только не совсем так, а примерно вот так
C++
1
2
3
4
5
6
7
8
9
class cls2
{
public:
cls2() {pt = new cls1;}
 
...
cls1 *pt;
...
}
Цитата Сообщение от pito211 Посмотреть сообщение
void main(...) {
...
cls2 *pt = new cls2();
...
delete pt;
}
я так понимаю класс cls1 повиснет где то в памяти?
в этом случае даже известно где
C++
1
pt->pt
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
24.03.2011, 12:57     new delete #4
Цитата Сообщение от pito211 Посмотреть сообщение
я так понимаю класс cls1 повиснет где то в памяти?
Повиснет не класс, а экземпляр класса
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 13:16     new delete #5
C++
1
2
3
4
5
6
7
8
9
class cls2 {
~cls2()
{
       delete pt;
}
...
cls1 *pt = new cls1();
...
}
И не зависнет уже никто...

Добавлено через 21 секунду
*повиснет
*нигде
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
24.03.2011, 13:30     new delete #6
Цитата Сообщение от Deviaphan Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
class cls2 {
~cls2()
{
       delete pt;
}
...
cls1 *pt = new cls1(); // !!!
...
}
Уже так стало можно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2011, 13:32     new delete
Еще ссылки по теме:

New/Delete C++
New delete C++

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 13:32     new delete #7
Цитата Сообщение от bigredcat Посмотреть сообщение
Уже так стало можно
Под ... ... вполне может скрываться конструктор или метод.)
Ошибку компиляции он ведь найти сможет, надеюсь.)
Yandex
Объявления
24.03.2011, 13:32     new delete
Ответ Создать тему
Опции темы

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