Упаковка C/C++ и Сжатие [закрываются]

Переменные автоматические переменные размера также полезны в некоторых случаях. Они были добавлены я nC99 и поддерживались в gcc в течение долгого времени.

void foo(uint32_t extraPadding) {
    uint8_t commBuffer[sizeof(myProtocol_t) + extraPadding];

Вы заканчиваете с буфером на стеке с комнатой для заголовка протокола фиксированного размера плюс переменные данные размера. Можно получить тот же эффект с alloca (), но этот синтаксис более компактен.

необходимо удостовериться, что extraPadding является рыночной стоимостью прежде, чем назвать эту стандартную программу, или Вы заканчиваете тем, что унесли стек. У Вас были бы к проверке работоспособности аргументы прежде, чем назвать malloc или любой другой метод выделения памяти, таким образом, это не действительно необычно.

6
задан Jason Sundram 17 July 2013 в 22:32
поделиться

5 ответов

Возможно, libtar ? Также под лицензией BSD.

7
ответ дан 8 December 2019 в 05:22
поделиться

7Zip имеет полный SDK для нескольких языков, включая C и C ++. Сжатие очень хорошее, хотя и не очень быстрое. Код находится под лицензией LGPL.

12
ответ дан 8 December 2019 в 05:22
поделиться

Вы можете использовать libzip - он под лицензией типа BSD, поэтому его следует использовать в коммерческом проекте.

3
ответ дан 8 December 2019 в 05:22
поделиться

Чтобы сжать несколько файлов в один zip-архив, вы можете использовать Zipios ++

2
ответ дан 8 December 2019 в 05:22
поделиться

Также посмотрите bzip2 .

-1
ответ дан 8 December 2019 в 05:22
поделиться