Каждый раз, когда начинается новый процесс, ему выделяется какая-то память. Память может быть четырех типов:
1.Heap
2.Local
3.Virtual
4.Global
Локальный, обычно используемый для адресов переменной main (), потому что эти основные переменные будут использоваться часто. Глобальный ведет учет глобальных переменных. Память кучи выделяется (страницы выделяются) для программ или процессов и содержит информацию о данных и функциях программы.
Что на самом деле происходит, что ОС использует концепцию указателей. И всякий раз, когда в программе один указатель начинает указывать на какую-то другую память (из-за некоторой ошибки кода) и прекращает указывать на предыдущую ячейку памяти, тогда последняя область памяти все еще используется в памяти кучи. но это пространство памяти бесполезно. При выходе из любой программы она освобождает память в соответствии с ее переменными и расположением функций. Но, как я уже сказал, в памяти без указания все еще есть данные, но никто не указывает на них, поэтому программа не может их освободить.
Чтобы освободить эту неиспользуемую область памяти, мы используем free (). Так как malloc, realloc, calloc, free - это все функции кучи памяти. Когда мы вызываем free, он удаляет страницы, которые были выделены для программы, а также освобождает эту неиспользуемую память.
In simple words,
50-100 место в памяти, выделенное для вашей программы. a и b (переменные в вашей программе) указывают на 60 и 70. из-за некоторой ошибки в коде b начинает указывать на 60. Так что теперь a и b обе указывают на 60. Никто не указывает на 70 сейчас. Когда программа начнет выход, она получит ячейку памяти a и освободит ее. Затем она получит ячейку памяти b и освободит ее. Но программа никогда не узнает местоположение 70, потому что никто не указывает на нее. не освободит память 70.
Принимая во внимание, что когда вы вызываете free (), он сразу освобождает всю страницу, и с этим целым 50-100 ячейками памяти освобождается. Теперь неточечные и заостренные ячейки памяти свободны для использования.
Теперь дни языки имеют сборщика мусора для выполнения функции free (). Но если говорить об ОС, то они должны делать это сами, поэтому в библиотеках всегда используется бесплатно. И это также лучший способ написания кода.