While frob is correct, there are some missing details which are important. STL for instance is completely usable over libraries if "ALL" items link to a dynamic (and the same) form of msvcrt. All executables, dlls etc, must use "dynamic link" to msvcrt and at that point it is completely viable to use all of C++ std without issue over DLL's. The key bit of difficulty with Windows is that things *can* run in different memory spaces even from within the same process. If everything shares the same msvcrt (must be the dll version), all the memory issues go away because the msvcrt basically defines "the memory space". (For the most part, there are *other* issues of course.)
In general though, this is a fine way to do things if you intend to be cross platform. It solves all the memory issues which vary from Windows to just about any other platform. It is a fairly common practice for most 3rd party items to supply appropriate dll's for this centralized msvcrt linkage etc. The performance cost is pretty much unmeasurable so who cares.
For those interested, the details are pretty simple. Msvcrt implements a memory manager with a singleton. Yup, the evil singleton strikes and in this case it can be a nightmare. You can link to msvcrt either dynamically or statically. *if* everything uses dynamic linkage, everything gets the same singleton. If there is any mixed usage, things blow up quickly because there are multiple memory managers which don't know about each other.
Hope this clarifies things a bit from the Windows unique view.