Прежде чем начать, мне нужно указать, что мое приложение использует множество строк, которые в среднем довольно малы и которые не меняются после создания.Могу ли я заставить std :: string использовать меньше памяти?
В Visual Studio 2010 я заметил, что емкость std :: string не менее 30. Даже если я пишу std::string str = "test";
, емкость str равна 30. Функция str.shrink_to_fit()
ничего не делает, хотя функция с тем же name существует для std :: vector и работает как ожидалось, а именно, уменьшая емкость, так что емкость == size.
- Почему
std::string::shrink_to_fit()
не работает в ожидании? - Как я могу гарантировать, что строка выделяет наименьший объем памяти?
http://www.stackoverflow.com/questions/2916358/immutable-strings-vs-stdstring – JimmyB
Вы можете использовать пользовательский распределитель для 'std :: basic_string'. Однако при этом будет создан тип строки, который несовместим с 'std :: string'. – kfx
Это звучит как оптимизация небольшого буфера с помощью более крупного буфера. Если это небольшая оптимизация буфера, вы не можете уменьшить ее. –