Olej,
как всегда со своими фантазиями =)
реализации malloc/realloc/free находится в libc и не является как таковым системным вызовом.
ядро предоставляет иные способы управления памятью процесса таке как brk и mmap
man для malloc/realloc/free находятся в секции 3 (библиотеки)
1. malloc/realloc/free находящиеся в libc, управляют памятью в размерах того очень ограниченного хипа, который заранее приставлен к пользовательскому процессу в момент его старта, как только программа начинает по-взрослому работать с памятью (в больших объёмах), так тут же включаются системные запросы для коррекции хипа.
2. printf() тоже ... "не является как таковым системным вызовом"(с)
, более того! - man для printf тоже "находится в секции 3"(с)
.
Ну и? ... - он тут же немедленно через sprintf() ретранслируется в системный write() -
всегда и бесповоротно!
Пользователь решил продолжить мысль 24 Марта 2012, 13:50:13:
"никак" это плохой ответ.
"никак" - это очень хороший ответ на такое намерение (я тоже как-то много времени убил на рассмотрение корреляции освобождения памяти в
процессе и свободной памятью
системы, да ещё и в realtime системе QNX, где всё прозрачнее).
"никак" - означает, что никакие free() в процессе напрямую не связаны с тем, сколько свободной памяти известно в системе - это всё игрища процесса со своим собственным хипом (это как котёнок охотится за своим хвостом).