I'm currently looking into memory consumption issues of a C++ application that I have written (a rendering engine using OpenGL) and have stumbled upon a rather unusual problem:
I'm using my own allocators basically everywhere in the system, which all obtain their memory from a default allocator which is using `malloc()`/`free()` for the actual memory. 

It turns out that my application is always reserving at least 4096 bytes (the page size on my system) for every allocation through malloc(), even if the size is significantly smaller. 
`malloc(8)` or even `malloc(1)` both result in an increase of memory of 4096 bytes. I'm tracking the used memory size through [GetProcessMemoryInfo()](http://msdn.microsoft.com/de-de/library/windows/desktop/ms683219(v=vs.85).aspx) directly before and after the allocation, as well as through the TaskManager (which basically shows the same values). Interestingly, using `_msize(ptr)` returns the correct size of the pointer.

I can only reproduce this behaviour within my own application, testing it with a new VS2012 C++ project did not yield the same results. This behaviour also seems independent of the current reserved size of the application, even with more than 10GB of free RAM it always reserves at least 4K per allocation.

I have no deep knowledge of the innards of the Windows operating system (if it is at all related to the OS), so if anyone has an idea what could cause this behaviour I would be greatful!