Освобождение памяти
1) В процессе работы приложения мы создаем ряд объектов (new TObject)
2) Потом эти объекты удаляем (delete TObject)
Вопрос в следующем:
Мне кажется, что должен существовать какой-нить способ выгрузки всех объектов из памяти за раз.. К примеру Visual Studio сам занимается освобождением памяти.. По любому чо-то должны были придумать и на Builder, может компонент какой-нитьP( , который за этим следит..
Ну это так, просто интересно. Понятно, что не очень сложно написать лишний раз delete..
А серьезно интересует следующий вопрос:
В процессе отладки приложения возникают ошибки, которые не дают приложению работать дальше - приходится делать "Program reset".. Получается, что освобождение памяти не успевает происходить.. Как с этим бороться??
Ситуация следующая:
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 этого нет. Или пока нет, насколькоя знаю.
Да и что это за программирование, и так многое на среде висит, многие незнают, что такое компиляция и линкование(((((((((((((((
А серьезно интересует следующий вопрос:
В процессе отладки приложения возникают ошибки, которые не дают приложению работать дальше - приходится делать "Program reset".. Получается, что освобождение памяти не успевает происходить.. Как с этим бороться??
В С++ специально для этого существет обработка исключений. Т.е. в случае возникновения ситуации, когда приложение не может продолжать работу - необходимо сгенерировать исключение, и в его обработчике выполнить необходимые действия по освобождению ресурсов, или же если исключение стандартное(деление на ноль например) - обработать его.
А сборщик мусора в вижуал студии - это тоже не волшебная палочка и эффективно работает далеко не всегда. Покрайней мере проблемы с утечкой памяти - весьма не редки. Хотя и много конечно зависит от прямоты руцей.
используй auto_ptr из стандартной библиотеки и shared_ptr из библиотеки boost.
Желательно использовать умные указатели.
используй auto_ptr из стандартной библиотеки и shared_ptr из библиотеки boost.
+1