malloc will itself have to fall back on VirtualAlloc to get the actual memory it passes back.
On top of that it will do a bit of bookkeeping to track the unused free space that subsequent allocation may be able to use.
So what you are losing is a bit of performance on each call to alloc. (especially when the chunks you request are larger than malloc keeps enough space around for)