Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Удаление динамической памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Какую и как использовать функцию, чтобы float сделать int? http://www.cyberforum.ru/cpp-beginners/thread14765.html
Какую и как использовать функцию, чтобы float сделать int?
C++ Проблемы работы с графикой (graphics.h) после апгрейда компа.. :( Короче курсовая на носу. Писал заставку на тему баскетбол, ну типа там нарисовал площадку, мячик, и мячик прыгает с корзины в корзину... Все было прикольтно, пока не сделал абгрейд... Работаю в Turbo... http://www.cyberforum.ru/cpp-beginners/thread14755.html
C++ Помогите решить две простые задачи(перевод из десятичной с. с в двоичную и полное решение квадратного уравнения)
5.6Перевод из 10-й системы счисления в 2-ю 5.7Решение квадратного уравнения полное Добавлено через 2 минуты 14 секунд /************************************** Перевод из десятичной системы...
C++ Определить, какое из чисел встречается в массиве чаще всего
8. Элементы массива расположить в обратном порядке, не используя дополнительный массив. Написать программу, в которой исходный массив заполнить случайным образом элементами в пределах от 101 до 200....
C++ Динамический массив в С++: как поменять длину массива по ходу выполнения программы? http://www.cyberforum.ru/cpp-beginners/thread14746.html
Есть такая проблема: есть файл, в котором построчно записаны числа float (1 число - 1 строка). Количество чисел неизвестно. Как сделать так, т.е. какие операции надо объявить, чтоб программа...
C++ Проблема: DevC++ отказывается компилировать (виста)! Помогите, плиз, с такой проблемой: DevC++ 4.9.9.2, скачал, установил, вроде всё работает, НО отказывается компилировать в принципе. Нажимаю кнопку - никакой реакции в принципе. Путь состоит только из... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17808 / 6014 / 388
Регистрация: 30.03.2009
Сообщений: 16,525
Записей в блоге: 26
17.05.2009, 17:25
Цитата Сообщение от leviaphan Посмотреть сообщение
Просто меня книга настращала (Джесс Либерти, Брэдли Джонс, "С++ за 21 день"). Там было написано, что если данные не удалены из динамической памяти с помощью delete, то до выключения компьютера они так и будут там храниться.
А книга в каком году была написана? Может быть в дремучие времена, когда были только однозадачные операционные ситемы? В этом случае такое ещё могло произойти.

Цитата Сообщение от leviaphan Посмотреть сообщение
Т. е. delete нужно использовать только если надо освободить участок памяти до завершения программы? И в конце функции main() удалять динамические объекты уже бессмысленно?
Хорошим стилем программирования является удаление всей динамической памяти, которую ты использовал. В случае простых коротеньких программ скорее всего ничего не произойдёт, даже если ты вообще не будешь освобождать динамическую память. Однако есть тонкие моменты. После того, как отработала процедура main - программа ещё НЕ завершила свою работу. В этом месте начинает работать завершающий код, который сбрасывает все буфферизированные потоки в файлы (если файлы ещё не закрыты), вызываются деструкторы, может ещё какие-то действия. И в момент этих действий может случиться так, что понадобится дополнительная память (мало ли что там может быть написано в деструкторе) и если случится так, что именно в этом месте свободной памяти не окажется, то может получиться, что в какой-нибудь файл данные допишутся не до конца или случится ещё какое-нибудь безобразие.

Если много выделать памяти, но её не освобождать, то это доплнительная нагрузка на всю машину. ОС не знает, что ты эту память не используешь, а потому держит её, занимая при этом либо физическую память, либо дисковое пространство под swap
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru