Необходимо освобождать динамическую память после использования указателей, потому что после выделения такая память сохраняется до её явного освобождения с помощью специальной операции или библиотечной функции. 3
Когда вызывается функция освобождения памяти, она сообщает компьютеру, что этот участок может быть использован кем-то другим. 4 При этом сама переменная не зануляется, она продолжает хранить адрес, которым ранее пользовалась. 4
Если динамическая память не освобождена до окончания программы, то она освобождается автоматически при завершении программы. 3 Однако явное освобождение ставшей ненужной памяти является признаком хорошего стиля программирования. 3
Также освобождение памяти необходимо, если указатель определён как локальный объект автоматической памяти: в этом случае выделенная память будет недоступна при выходе за пределы блока локализации указателя, и её нужно освободить перед выходом из блока. 3