Ядро имеет коллекцию записей процессов в памяти ядра и отслеживает каждый процесс, объем потребляемой памяти, такие ресурсы, как ввод / вывод, дескрипторы файлов или inode. Записи процесса обычно хранятся в очереди, в которой указатель задачи ядра указывает на запись процесса бесконечным образом (это объясняет, почему восприятие «многозадачности», это делает мгновение ока - так быстро действительно, это делает единую задачу в глазах ядра). В записи процесса есть поле, которое сообщает, сколько памяти было потрачено данным процессом.
Да, ядро получает память обратно в свой пул, готовый для использования другим процессом. Более того, вы абсолютно на 100% правы в отношении утечек памяти, как указывал Джон Уэлдон. Я упоминал об этом в другой публикации , для каждого malloc есть бесплатный, если нет, у вас есть утечка памяти. Так что не беспокойтесь о сеансе отладки. Это совершенно нормально, поскольку ядро несет ответственность за то, чтобы память была возвращена.
Некоторые приложения (особенно демоны) должны быть отлажены должным образом, и в нем не должно быть утечек памяти, так как демон будет работать долгое время до следующей перезагрузки. Кстати, в моей любимой книге «Программирование на Expert C, Deep C Secrets - Peter Van Der Linden» упоминалось, что когда-то, когда он был в Sun, существовал инструмент для печати printtool, но очень часто очередь заклинило из-за утечки памяти в программе диспетчера очереди печати, и перезагрузка машины Sun вылечила ее, он подробно описывает это в связи с утечками памяти.
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.