モードで文字列のブロックを圧縮しようとしていpartial_flush
ます。さらに、処理する文字列が 1 つしかない場合が 1 つあります。
今、私は と を呼び出してdeflateInit2(params...)
います。出力に正しい出力が得られますが、またはを使用してすべてのメモリの割り当てを解除しようとするとエラーが発生しますdeflate()
deflateEnd()
uncompressable(tried)
deflateEnd(&strm);
inflateEnd(&strm);
今のところ、アプリケーションの実行時にこのケースを作成する可能性はないと考えていますが、メモリ リークのエラーを特定して排除する必要があります。
スキーマ全体は次のようになります。
class Czlib{
compress( std::string );
decompress( std::string );
Czlib() // allocate inflate and deflate state here
~Czlib()// deallocate both here
}
int main(){
for (char c=0x00 ; ; c++){
std::string str(255, c);
Czlib zlib;
zlib.compress(str);
}
クラスはループごとに終了する必要があることを知っていますが、おそらくそうですが、報告deflateEnd
を続けているため、最終的に動的に割り当てられたデータはメモリに残ります:(inflateEnd
Z_DATA_ERROR