Если, как вы говорите, система настроена без пространства подкачки, то объем свободной памяти можно рассчитать, добавив значения "MemFree", "Buffers" и "Cached" из /proc/meminfo.
.
Это именно то, что показывает команда 'free -m' в разделе 'free' в строке '- / + buffers / cache'.
В Python я бы реализовал это следующим образом:
with open('/proc/meminfo', 'rt') as f:
vals = {}
for i in f.read().splitlines():
try:
name, val = i.split(':')
vals[name.strip()] = int(val.split()[0])
except:
pass
memfree = vals['MemFree'] + vals['Buffers'] + vals['Cached']
Это даст значение в килобайтах.
Как уже говорили другие, malloc вряд ли когда-либо вернет ноль. Linux будет перераспределяться, и когда вы начнете использовать страницу, которая действительно не может быть найдена, включится убийца OOM.