Во многих книгах и учебных пособиях я слышал, как подчеркивается практика управления памятью, и чувствовал, что некоторые загадочные и ужасные вещи могут произойти, если я не освобожу память после того, как использую ее.
Я не могу говорить о других системах (хотя для меня разумно предположить, что они применяют подобную практику), но по крайней мере в Windows ядро в основном гарантированно очищает большинство ресурсов (за исключением нечетного числа), используемых программа после завершения программы. Что включает в себя кучу памяти, среди прочего.
Я понимаю, почему вы захотите закрыть файл после того, как вы его используете, чтобы сделать его доступным для пользователя, или почему вы хотите отключить сокет, подключенный к серверу, чтобы сэкономить пропускную способность, но это кажется глупым должен микроуправлять ВСЕМ вашей памятью, используемой вашей программой.
Теперь я согласен, что этот вопрос является широким, поскольку то, как вы должны обращаться с вашей памятью, основано на том, сколько памяти вам нужно и когда вам это нужно, поэтому я ограничу сферу этого вопроса следующим образом: если мне нужно использовать часть памяти на протяжении всей жизни моей программы, действительно ли необходимо освобождать ее непосредственно перед завершением программы?
Изменить: вопрос, предложенный в качестве дубликата, был характерен для семейства операционных систем Unix. В его верхнем ответе даже указан инструмент, специфичный для Linux (например, Valgrind). Этот вопрос предназначен для охвата большинства «обычных» не встроенных операционных систем, а также того, почему стоит или не рекомендуется освобождать память, которая необходима на протяжении всей жизни программы.