Реальное крушение Одиночных элементов состоит в том, что они повреждают наследование. Вы не можете получить новый класс, чтобы дать Вам расширенную функциональность, если у Вас нет доступа к коду, где на Singleton ссылаются. Так, вне факта Singleton сделает Ваш код сильно связанным (закрепляемый Стратегической моделью... иначе Внедрение зависимости), это будет также препятствовать тому, чтобы Вы закрыли разделы кода от пересмотра (совместно использованные библиотеки).
поэтому даже примеры регистраторов или пулов потоков недопустимы и должны быть заменены Стратегиями.
Чтобы распаковать файл формата gzip с помощью zlib, вызовите inflateInit2
с параметром windowBits
как 16 + MAX_WBITS
, как это :
inflateInit2(&stream, 16+MAX_WBITS);
Если вы этого не сделаете, zlib пожалуется на неправильный формат потока. По умолчанию zlib создает потоки с заголовком zlib, а при inflate не распознает другой заголовок gzip, если вы этого не укажете. Хотя это задокументировано, начиная с версии 1.2.1 заголовочного файла zlib.h
, в руководстве zlib ) этого нет. Из файла заголовка:
windowBits
также может быть больше 15 для необязательного декодирования gzip. добавлять От 32 доwindowBits
для включения декодирования zlib и gzip с автоматическим заголовком обнаружения или добавьте 16, чтобы декодировать только формат gzip (формат zlib будет вернутьZ_DATA_ERROR
). Если декодируется поток gzip, используетсяstrm-> adler
crc32 вместо adler32.