Я использую Буферы протокола и OpensSSL для генерации, HMAC, а затем CBC зашифровывают два поля, чтобы скрыть куки сеанса - аналогичные токены Kerberos.
API протокола Buffers взаимодействует с std :: strings и имеет механизм кэширования буфера; Я использую механизм кэширования для последовательных вызовов в одном и том же потоке, помещая его в локальную память потока; Кроме того, OpenSSL HMAC и EVP CTX также помещены в одну и ту же структуру локальной памяти потока (см. этот вопрос для получения дополнительной информации о том, почему я использую локальную память потока, и о значительном ускорении, которое она обеспечивает даже с одним потоком ).
Генерация и десериализация, "мои алгоритмы", этих строк cookie использует промежуточные значения void *
s и std::string
s, и, поскольку у буферов протокола есть механизм сохранения внутренней памяти, я хочу эти характеристики для "моих алгоритмов".
Итак, как мне реализовать обычную чистую память? Я не знаю много о rdbuf (streambuf - strinbuf ??) объекта std :: string. Предположительно, мне нужно увеличить его до минимального общего размера, когда-либо встречавшегося при выполнении «моих алгоритмов». Мысли?
Мой вопрос, я думаю, будет следующим: "это внутренний буфер строки, который можно использовать повторно, и если да, то как?"
Редактировать (новый вопрос):
Кажется, после публикации Влада, кажется, что мне нужен std :: string, а также пустой буфер void * c-style. Тогда мой вопрос будет таким: сохраняют ли популярные строковые реализации stl память, когда им это не нужно? (мои потребности, вероятно, останутся между 128 байтами до 10 КБ).