我目前在玩zlib
。我可以重複使用zlib的z_stream進行多個操作嗎?
通常的例子是多還是少,如下所示(C/C++僞代碼)
z_stream zs;
memset(&zs, 0, sizeof(zs));
if (deflateInit(&zs, Z_DEFAULT_COMPRESSION) != Z_OK)
return false;
zs.next_in = input_data;
zs.avail_in = input_size;
zs.next_out = output_data;
zs.avail_out = output_size;
int result = deflate(&zs, Z_FINISH);
deflateEnd(&zs);
return result == Z_STREAM_END ? true : false;
使用的valgrind我看到deflateInit和memset不完全「免費」的操作,但需要相當長的時間。
我的問題是,我可以重複使用z_stream
和deflateInit
?
例如可以通過更新緩衝區多次放氣嗎?
爲什麼不給自己一個測試呢? – wzona
如果我測試它,並且它確實有效,但它並不意味着它是正確的。它可以將數據「添加」到先前的「部分」或其他東西。 – Nick