Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Освобождение памяти

263
01 апреля 2006 года
koltaviy
816 / / 16.12.2004
Ситуация следующая:
1) В процессе работы приложения мы создаем ряд объектов (new TObject)
2) Потом эти объекты удаляем (delete TObject)

Вопрос в следующем:
Мне кажется, что должен существовать какой-нить способ выгрузки всех объектов из памяти за раз.. К примеру Visual Studio сам занимается освобождением памяти.. По любому чо-то должны были придумать и на Builder, может компонент какой-нитьP( , который за этим следит..
Ну это так, просто интересно. Понятно, что не очень сложно написать лишний раз delete..

А серьезно интересует следующий вопрос:
В процессе отладки приложения возникают ошибки, которые не дают приложению работать дальше - приходится делать "Program reset".. Получается, что освобождение памяти не успевает происходить.. Как с этим бороться??
14K
01 апреля 2006 года
halflifer
28 / / 14.03.2006
Цитата:
Originally posted by koltaviy
Ситуация следующая:
1) В процессе работы приложения мы создаем ряд объектов (new TObject)
2) Потом эти объекты удаляем (delete TObject)

Вопрос в следующем:
Мне кажется, что должен существовать какой-нить способ выгрузки всех объектов из памяти за раз.. К примеру Visual Studio сам занимается освобождением памяти.. По любому чо-то должны были придумать и на Builder, может компонент какой-нитьP( , который за этим следит..
Ну это так, просто интересно. Понятно, что не очень сложно написать лишний раз delete..

А серьезно интересует следующий вопрос:
В процессе отладки приложения возникают ошибки, которые не дают приложению работать дальше - приходится делать "Program reset".. Получается, что освобождение памяти не успевает происходить.. Как с этим бороться??



В VS есть CLR(Common Language Runtime), который управляет кодом написанном на Microsoft Intermediate Language(MSIL).
Весь код на Microsoft Intermediate Language(MSIL) или OptIL исполняется как управляемый код (managed code); этот код исполняется в сотрудничестве с .Net Framework. .Net Framework обеспечивает управление памятью, кросс- языковую интеграцию, обработку исключений, защиту кода и автоматическое управление сроком жизни объектов.

Появилось это в последних VS, и BC++B этого нет. Или пока нет, насколькоя знаю.

Да и что это за программирование, и так многое на среде висит, многие незнают, что такое компиляция и линкование(((((((((((((((

1
01 апреля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by koltaviy


А серьезно интересует следующий вопрос:
В процессе отладки приложения возникают ошибки, которые не дают приложению работать дальше - приходится делать "Program reset".. Получается, что освобождение памяти не успевает происходить.. Как с этим бороться??


В С++ специально для этого существет обработка исключений. Т.е. в случае возникновения ситуации, когда приложение не может продолжать работу - необходимо сгенерировать исключение, и в его обработчике выполнить необходимые действия по освобождению ресурсов, или же если исключение стандартное(деление на ноль например) - обработать его.
А сборщик мусора в вижуал студии - это тоже не волшебная палочка и эффективно работает далеко не всегда. Покрайней мере проблемы с утечкой памяти - весьма не редки. Хотя и много конечно зависит от прямоты руцей.

16K
03 апреля 2006 года
Vendigo
13 / / 22.03.2006
Желательно использовать умные указатели.
используй auto_ptr из стандартной библиотеки и shared_ptr из библиотеки boost.
294
03 апреля 2006 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by Vendigo
Желательно использовать умные указатели.
используй auto_ptr из стандартной библиотеки и shared_ptr из библиотеки boost.


+1

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог