Другие языки программирования и технологии

c++ new\delete: смысл выделения и освобождение памяти для озу из самой же озу?

Скомпилируй программу:

int main() { while (true) new int; }

Открой в диспетчере задач вкладку "Быстродействие", запусти программу, узнаешь, что будет, если не освобождать выделенную память.
Павел Тищенко
Павел Тищенко
50 547
Лучший ответ
Если не освобождать, то память помечается как занятая и её использование невозможно. Это самые азы, выделил - освободи.
Резервирование памяти под данные чтобы внезапно не оказалось, что их писать тупо некуда.
Виталий Бойков
Виталий Бойков
53 156
Смысл в динамическом выделении памяти (в процессе работы программы) . Например, применяется в тех случаях, когда в момент написания программы неизвестно сколько нужно выделить памяти. Самый элементарный пример - динамический массив. Вы запускаете программу, вводите размер массива, программа выделяет память для него. В противном случае вам пришлось бы прописывать размер массива вручную в программе (но не всегда известно сколько в нем будет элементов. Он может оказаться слишком мал или наоборот избыточен - а это лишний расход памяти) . Операция delete освобождает выделенную память, т. к. если ее не освободить, то происходить будет утечка памяти. Например, вы написали игру, в процессе игры вы выделяете память, выиграли или проиграли и можете начать заново (не выходя из программы, нажав кнопку "повторить",например) . Начав заново вы будите снова выделять память, отъедая ресурсы, а старая выделенная память будет висеть мертвым грузом, что может сказаться и на производительности и вообще память может закончиться (смотря какими объемами данных оперировать) . Поэтому память надо освобождать.
Vitalij Zaicev
Vitalij Zaicev
581