Ответ 1
compress()
используется для сжатия данных в одном вызове и всегда сжимается в формате zlib, который дефлирует данные с двухбайтовым заголовком и четырехбайтовым трейлером. compress()
используется сам по себе.
deflate()
используется для сжатия данных на куске за раз и/или для сжатия в других форматах, таких как gzip-wrapped или raw, а также с другими параметрами, такими как уровни памяти и стратегии сжатия.
Вы бы использовали compress()
, если у вас есть все доступные данные одновременно и достаточно памяти для хранения результата, и вы хотите, чтобы формат сжатия по умолчанию, использование памяти и стратегия. В противном случае вы должны использовать deflate()
.
deflate() не используется сам по себе. Для инициализации структуры z_stream
, используемой deflate()
, вам нужно использовать deflateInit()
или deflateInit2()
. Затем вы вызываете deflate()
один или несколько раз, чтобы принимать данные для сжатия и предоставлять результат. В конце, deflateEnd()
вызывается для освобождения ресурсов памяти, используемых в структуре. Вы можете прочитать документацию в zlib.h и http://zlib.net/zlib_how.html для получения дополнительной информации.