我正在尝试以partial_flush
模式压缩字符串块,此外还有一种情况是只有一个字符串要处理。
现在我打电话deflateInit2(params...)
,deflate()
和deflateEnd()
。我在输出中得到了一些正确的输出,witch is 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
,所以最终动态分配的数据会留在内存中:(