Я изучаю компьютерную инженерию, и у меня есть курсы электроники. Я слышал от двух моих профессоров (из этих курсов), что можно избежать использования функции free()
(после malloc()
, calloc()
и т.д.), Поскольку выделенные пространства памяти скорее всего не будут использоваться снова для выделения другой памяти. То есть, например, если вы выделите 4 байта, а затем отпустите их, у вас будет 4 байта пространства, которые скорее всего не будут выделены снова: у вас будет отверстие.
Я думаю, что сумасшедший: у вас не может быть не-игрушка-программа, где вы выделяете память на кучу, не выпуская ее. Но у меня нет знаний, чтобы точно объяснить, почему это так важно, что для каждого malloc()
должен быть free()
.
Итак: существуют ли когда-либо обстоятельства, при которых может быть целесообразно использовать malloc()
без использования free()
? А если нет, то как я могу объяснить это своим профессорам?