Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2015, 14:42   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Удаление обьекта из управляемой кучи

Добрый день !

Можно ли удалить обьект из управляемой кучи ручным способом ,

а именно через оператор delete ?

Код:
A ^p = gcnew A;

delete p;
RAFA91 вне форума Ответить с цитированием
Старый 28.09.2015, 15:13   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

нет, нельзя
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 28.09.2015, 15:24   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

так дело в том что при delete p; есть вызов деструктора.

из деструктора я могу же вызвать финализатор.
RAFA91 вне форума Ответить с цитированием
Старый 28.09.2015, 15:28   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему не довериться уборщику мусора? Разве он деструктор не вызовет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2015, 15:35   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

В принципе, возможно, но есть риск разрушить стек, а это чревато очень непредсказуемыми последствиями. В DOS-е это можно было делать без проблем. С Виндой сложнее. Она, гадина, каждой проге выделяент квант опроса и найти, что она записала в стек, дорогого стоит. Да и сами разработчики, вряд-ли знают куда она чё пишет. Иногда, часть, файлов даже на жесткаче находится. Поди там разберись.
В общем, не советую туда лезть, если в дурдом попасть не хотите.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2015, 15:36   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Для освобождения unmanaged ресурсов в определенное время (а не когда GC захочет) есть IDisposable.

Цитата:
В DOS-е это можно было делать без проблем
Управляемая куча в DOS'е? Вы там машину времени изобретали?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.09.2015 в 15:38.
Alex11223 вне форума Ответить с цитированием
Старый 28.09.2015, 15:37   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Для освобождения unmanaged ресурсов в определенное время (а не когда GC захочет) есть IDisposable.
верный совет.
ибо ТС, вы опять пытаетесь связать С++ и dotNET.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.09.2015, 15:42   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А почему не довериться уборщику мусора? Разве он деструктор не вызовет?
Доверяй, но проверяй. Не всегда можно на сборщик положиться. Лучше, это делать явным образом. Открыл динамику, значит закрой. Давненько было, лет пять назад. Писал прогу и пренебрёг этим правилом. Прога работала ровно 2 часа, потом винда выдавала - переполнение памяти. Причина банальная, в функции не вставил delete.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2015, 15:43   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Доверяй, но проверяй. Не всегда можно на сборщик положиться. Лучше, это делать явным образом. Открыл динамику, значит закрой. Давненько было, лет пять назад. Писал прогу и пренебрёг этим правилом. Прога работала ровно 2 часа, потом винда выдавала - переполнение памяти. Причина банальная, в функции не вставил delete.
вы не в С++ разделе.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.09.2015, 15:48   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вы не в С++ разделе.
Ой, пардон. Ухожу.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание управляемой web анимации GODEXPERT Фриланс 4 30.03.2015 10:32
Создание управляемой web анимации GODEXPERT Фриланс 5 12.01.2015 09:19
Сортировка КУЧИ!!! bignick Общие вопросы по Java, Java SE, Kotlin 6 11.04.2011 23:08
Повреждение кучи fosder Помощь студентам 0 08.12.2010 01:36