Unfortunately there is nowhere near enough information provided here to really help. All you have shown are graphs showing an increase over an unknown time frame and a call stack showing that some STL internals call through to the an allocator.
For all we know you could be be doing something like:
#include <map>
struct s {};
int main()
{
std::map<unsigned int, s *> m;
auto p = m.insert({1, new s});
}
which would obviously leak since the map object doesn't clean up memory you allocated.
You would need to either delete the pointer before you erase it:
#include <map>
struct s {};
int main()
{
std::map<unsigned int, s *> m;
auto p = m.insert({1, new s});
delete m.find(1)->second;
}
or use a smart pointer to do this for you:
#include <map>
#include <memory>
struct s {};
int main()
{
std::map<unsigned int, std::unique_ptr<s>> m;
auto p = m.insert({1, std::make_unique<s>()});
}
Actually providing code or even a sample which shows the same behaviour is the most helpful thing here.
Also remember that the Visual C++ CRT has debug features that get the CRT to show when a block of memory is still allocated when your application exits. See this for more information. The new header also has placement new functions defined to call the debug version of malloc to extend the same functionality to new too. This means if you are allocating memory using the default malloc and new, you can tell whether or not there are leaks.
As an aside Microsoft Q&A with the winapi tags is not the right place for this since this is a C++ question. The C++ tag would be better.