![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Валерия |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Как вызвать деструктор тот что с тильдой, что бы полностью стереть obj1 и obj2 с памяти (obj3 - оставить) Тоесть полностью высвободить место которое занимают эти объекты. |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
в вашем примере память освободится "сама", когда кончится время жизни объектов, если бы вы выделяли под них память динамически, то пришлось бы освобождать память вручную Это сообщение отредактировал(а) zkv - 16.4.2007, 23:40 |
|||
|
||||
| Валерия |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
А можете переделать мой пример, что бы память под value выделялась динамически, а потом высвобождалась?
Тоесть что бы вообще не было утечки |
|||
|
||||
| archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Добавлено через 1 минуту и 24 секунды
-------------------- 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 |
||||
|
|||||
| betal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 26.12.2006 Репутация: нет Всего: 1 |
--------------------
101100010100001101100001110100101111011легкие деньги |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Валерия, У вас абсолютно все переменные в примере создаются в стеке, следовательно по достижению конца блока, в котором они были определены, деструктор для них вызывается автоматически.
|
|||
|
||||
| Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: 1 Всего: 3 |
Извинните, а почему в этом месте деструктор вызывается. Возможно я что-то подзабыл? Это сообщение отредактировал(а) Annihilator - 17.4.2007, 07:53 -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Annihilator, заканчивается блок в которым они были объявлены.
|
|||
|
||||
| fantast |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
делай так
я такое делал когда выделял переменную по такому типу
в твоем случае это тоже сработает, можешь добавить в деструктор вывод какойнить строки и сам увидишь его запуск Это сообщение отредактировал(а) fantast - 17.4.2007, 13:31 --------------------
Эпитафия: Он старался. Неизвестный |
||||
|
|||||
| ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
Как уже сказали, в данном примере и так не будет утечки... Но если есть необходимость просто понять суть - тогда вот переделанный пример:
Вызов деструктора у тебя будет виден благодаря надписи "deleted" -------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
НЕ ДЕЛАЙ ТАК! указатель, переданный delete должен быть получен с помощью new, иначе будут утечки(прога будет валиться и т.д. и т.п.) Валерия, если очень хочется явно вызвать деструктор, то можно написать obj1.~my (), но учти, что когда время жизни объекта закончится, деструктор вызовется ещё раз(!) и если в деструкторе освобождается память, то она будет освобождена дважды(!), что опять же утечки и т. п. -------------------- 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 |
|||
|
||||
| fantast |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 10.12.2006 Где: минск, столица на шей Родины Репутация: 2 Всего: 2 |
ты уверен? 8) --------------------
Эпитафия: Он старался. Неизвестный |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 3 Всего: 8 |
archimed7592,
какие я же могут быть утечки, если, удаление вызовется два раза? |
|||
|
||||
| _stranger_ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 3.10.2006 Где: город-герой Киев Репутация: 2 Всего: 2 |
даже не утечки а UB. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |