Взгляд Boehm GC широко используемый консервативный сборщик "мусора" для C (или C++), который мог бы удовлетворить Ваши потребности до умного управления памятью, затронут.
Если большинство ваших строк неизменяемо, библиотека Boost Flyweight может удовлетворить ваши потребности.
Она выполнит интернирование строк, но я в это не верю копирует при записи.
Андрея Александреску ' Реализация basic_string на основе политик 'может помочь.
Take a look at The Better String Library from legendary Paul Hsieh
копирование при записи (я думаю, что это предоставляется бесплатно почти во всех реализациях std :: string)
Я больше не верю, что это так. Копирование при записи вызывает проблемы, когда вы изменяете строки с помощью итераторов: в частности, это вызывает либо нежелательные результаты (т. Е. Отсутствие копирования, и обе строки изменяются), либо ненужные накладные расходы (поскольку итераторы не могут быть реализованы исключительно в терминах указателей). : им необходимо выполнить дополнительные проверки при разыменовании).
Кроме того, все современные компиляторы C ++ выполняют NRVO и в большинстве случаев исключают необходимость копирования строк возвращаемых значений. Поскольку это был один из наиболее распространенных случаев семантики копирования при записи, он был удален из-за вышеупомянутых недостатков.