Что если вы напишите собственный распределитель и передадите его на карту.Ваш локатор может использовать malloc и бесплатно.Я почти уверен, что это на уровне ОС.
Ваш класс распределителя должен реализовывать только методы, показанные здесь: http://www.cplusplus.com/reference/std/memory/allocator/
Затем, когда вы определите свой std :: map .. passкласс распределителя в качестве третьего аргумента шаблона: http://www.cplusplus.com/reference/stl/map/
например:
std::map<KeyType, ValueType, less<KeyType>, MyAllocator>
Эта ссылка из этой книги также содержит пример кода для создания собственного распределителя: http://www.josuttis.com/libbook/memory/myalloc.hpp.html
Предупреждение: Я думаю, что причина в том, что большинство распределителей не отдают память ОС, заключается в том, что быстрее удерживать ее на потом, чем возвращать ОС и получать больше каждый раз;так что вы можете увидеть некоторые неэффективности скорости.
Редактировать: Также нашёл этот аккуратный взгляд: http://www.codeguru.com/cpp/cpp/cpp_mfc/stl/article.php/c4079