Zlib usage - deflateEnd() error
Zlib usage - deflateEnd() error
>我正在尝试以partial_flush
模式压缩字符串块,此外,有一种情况只有一根字符串要处理。
现在我打电话给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
,因此最终动态分配的数据保留在内存中:(
deflateEnd()
返回Z_DATA_ERROR
意味着在该调用时,放气操作处于某种中间状态,即未完成。 所以deflate()
从未返回过Z_STREAM_END
.
无论如何,所有为放气分配的内存都由 deflateEnd()
释放。 因此,如果您调用 deflateEnd()
,则 zlib 分配的内存不会发生内存泄漏。
要正确完成 Deflate 流,您需要为 deflate()
提供 Z_FINISH
flush 参数,然后调用 deflate()
来消耗其输出,直到它返回 Z_STREAM_END
。
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 从不同目录执行时"symbol lookup error:",否则从构建目录执行时按预期工作
- 对象声明中的模板"error: expected expression"
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 为什么我会"error: expected expression"?
- CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- Zlib usage - deflateEnd() error