When you make a Dll - you always write it in some Language - in your case C++ using Visual Studio 2005 or 2008.
In which case it is the C++ runtime that is responsible for creating its freestore and deciding how to allocate it.
Specifically, if you use the Dll runtime option, then a single dll - msvcrtxx.dll - manages a single freestore that is shared between all dll's, and the exe, that are linked against that dll.
If you use the static runtime option when beuiding your exe and dlls, then the exe and each dll gets its own instance of libc built in, with its own freestore management.