Zlib调用deflateInit函数始终返回Z_MEM_ERROR

时间:2014-09-05 14:40:27

标签: zlib

我正在使用 zlib-1.2.8 ,我在代码中用 compress.c 调用compress2(dest, destLen, source, sourceLen, level)来压缩数据。

函数compress2 (dest, destLen, source, sourceLen, level)正在调用 deflateInit(&stream, level);

deflateInit 是宏。

#define deflateInit(strm, level) \
    deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))

compress2 正在调用 deflateInit _ 。 我的问题是 deflateInit _ 正在返回Z_MEM_ERROR

我正在尝试在 deflateInit _ 内部进行调试,但没有收到我放在那里的任何调试消息。

此外,我评论了函数 deflateInit _ 中的所有现有代码,并从函数Z_BUF_ERROR返回不同的错误,但仍然 deflateInit _ 正在返回Z_MEM_ERROR 。 如果我在解释Z_BUF_ERROR,我仍然是getting Z_MEM_ERROR

请告诉我这种行为背后的一些指示。

1 个答案:

答案 0 :(得分:1)

这意味着它所说的。 zlib正在调用malloc(),它正在返回NULL。这可能是因为malloc()没有足够的内存来满足请求。使用默认参数进行收缩需要分配大约260K才能运行。