а как Вы вообще проверяете особожденна память или нет ?вкратце, популярно о работе malloc/free в libc :
- есть такая хрень "куча" - специальным образом размеченная память, принадлежащая процессу
- malloc "выделяет память" то есть даст кусок памяти из кучи для ваших нужд. Если в куче нет достаточного куска памяти, то она обратится за ним к системе.
- free "освобождает память" то есть помещает кусок памяти обратно в кучу. Заметте, что отнють не отдаёт обратно системе, а хранит для следующего использования.
- правила по которым память будет возвращаться системе достатчно путанны, но еффективны.