когда вы делаете new
, ОС выделяет память указателю, которому вы ее назначаете. После завершения использования вы можете больше не требовать его. Но память все еще помечена как «используемая» ОС.
Теперь, когда указатель объявлен в области действия функции или любого другого блока (из {}
), он будет удален (будет удален только указатель), когда закончится выполнение блока. В таких случаях память, выделенная с помощью new
, остается помеченной ОС как «используемая» и не выделяется никаким другим указателям, вызывающим new
, или переменной. Это приводит к появлению в оперативной памяти потерянного блока памяти, который никогда не будет использоваться, поскольку его указатель был удален из памяти, но он будет занимать блок памяти.
Это называется утечкой памяти. Несколько таких блоков также могут сделать ваше приложение нестабильным.
Вы используете delete
для освобождения таких блоков памяти и освобождения ОС, чтобы ее можно было использовать для других запросов