Again, Linux
DOES NOT overcommit memory.
Linux does not lie about what available memory is. Rather, it is most developers that do not understand how memory is managed on Linux.
What you probably mean is that you don't get physical memory when you run malloc().
That's because when you allocate memory on Linux you allocate virtual address space rather than physical memory.
Basically, you get a bunch of addresses that may or may not be backed up by physical pages.
If you want physical memory you just need to use mlock() along with malloc() and you are all fine.