![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
К примеру:
Такой такой код корректен? Сколько раз в данном случае отрабатывает delete? -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| witex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 0 Всего: 4 |
1 раз будет всего смполняться!
Только этот
чтобы удалить "х", надо вызывать деструктор! ->~SomeClass(); но чтобы праильно "х" удалалить , надо испольщовать delete[] а не delete --------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
всё правильно.... delete pSomeClass вызовет деструктор класса pSomeClass в котором в свою очередь вызовется delete x
Это сообщение отредактировал(а) Partizan - 10.12.2006, 11:49 -------------------- СУВ, Partizan. |
|||
|
||||
| VectorMan |
|
|||
|
Antihero ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 9.4.2006 Репутация: 1 Всего: 4 |
witex, уверен?
Вообще то конструкции типа
означают "динамически создать элемент типа int и присвоить ему значение 10" |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
deleted
Это сообщение отредактировал(а) archimed7592 - 10.12.2006, 12:36 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Daevaorn, да я страничку обновить забыл...тут уже все что нужно ответили
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
=)) к стыду своему я тоже попался )))
-------------------- СУВ, Partizan. |
|||
|
||||
| WERITAS |
|
|||
|
******** ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 2.5.2005 Где: Москва Репутация: нет Всего: 5 |
Rockie,
Это тема-развод?
Код корректный, delete очищает одну переменную, созданную динамически, как уже было отмеченно выше. -------------------- Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак" |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Провакация
|
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
и не думал В данном примере delete очищает память и вызывает деструктор, в котором в свою очередь очищается память?.. Если delete будет вызыван дважды(для объекта и для переменной x), то отработает ли он по участку памяти, уже очищенной в ~SomeClass(){delete x; }. -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
гмм....у ты думаешь после первого delete pSomeClass всё ещё будет указывать на ту же область памяти?
сомневаюсь) ооочень сомневаюсь) -------------------- СУВ, Partizan. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| zabivator |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 7.6.2006 Где: нск Репутация: 1 Всего: 2 |
Rockie, после отработки деструктора класса вызываются сначала деструкторы его мемберов, затем - базовых классов, соответственно в твоем случае удалятся указатель на память, а память удалять нужно руками - поэтому мы в деструкторе пишем delete x
--------------------
#include <zabivator>int main( int, char * [] ){ while( Zabivator::жив() ) Zabivator::моск()++; return 0;} |
|||
|
||||
| Rockie |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
Partizan, imho в этом случае при выходе из ф-ии main() вызовется деструктор, в котором очистится память:
А в случае
delete вызывает деструктор и освобождает память, выделенную под объект. А если в деструкторе уже освобождается память? вот что хотелось бы узнать.. Daevaorn, я плохо понимаю ваши посты. Что конкретно не устраивает, порядок слов
? Судя по всему вы много чего понимаете, но только ничего не скажете.. Ваш пост неинформативен. Хорошо я понимаю теорию, плохо ли - это оффтоп и никого не интересует, вы попросту нафлудили. Это сообщение отредактировал(а) Rockie - 10.12.2006, 20:57 -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||||||
|
|||||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |