Also, wrapping the malloc is not *always* a bad thing to do: there are mallocs out there that do things you wouldn't expect, e.g. if you try to malloc() zero bytes. (Yes, there are legitimate reasons to do that.)
Or you need to write your own memory management abstractions on top of malloc, like slab allocators, or memory pools (per-thread, or for some other reason), or add guard bytes, or ...