Мне нужно надуть большие строки с помощью zlib (около 500 КиБ), и я заметил, что при использовании небольшого буфера вывод искажается (случайные буквы преобразуются в гибери sh), но при переключении на большой буфер вывод становится не поврежден.
Это мой код:
std::string str;
std::lock_guard<std::mutex> lock(mutex_);
stream_.next_in = (unsigned char*)deflated.data();
stream_.avail_in = deflated.size();
int result = Z_OK;
do
{
char buffer[1024] = { 0 };
stream_.next_out = reinterpret_cast<unsigned char*>(buffer);
stream_.avail_out = sizeof(buffer);
result = ::inflate(&stream_, Z_NO_FLUSH);
str.append(buffer);
} while (result == Z_OK);
inflated = std::move(str);
Теперь при 1024 вывод искажается, но если я переключаю его на 256 КиБ (буфер символов [263168]), вывод в порядке. Как я могу решить эту проблему, не переключаясь на такой большой буфер?