【问题标题】:zlib - extract large entryzlib - 提取大条目
【发布时间】:2013-02-21 01:54:18
【问题描述】:

我在我的程序代码中使用 zlib 库,首先当我尝试提取文件时,它适用于 zip 存档中的小条目,基本上我调用下面的函数,

unzOpenCurrentFile (unzFile file)

unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)

unzCloseCurrentFile (unzFile file)

buf 是一个内存指针(或字节数组),用于保存该条目的数据。但是当遇到大型条目时,我的程序根本无法创建 10000000 大小的数组。我还尝试传递FILE* 指针而不是常规内存,但无济于事。

【问题讨论】:

  • 您可以使用内存映射文件而不是内存分配。
  • 什么是unzOpenCurrentFile?这不是zlib 中的函数。 zlib 甚至无法处理 zip 存档文件。
  • @JoachimPileborg 我认为它来自相关的东西,称为 minizip。
  • 这只是关于9MB。你是mallocing 那个数组,而不是试图堆栈分配它,对吧?
  • @treemonster19 :您可以将Boost.Interprocess 用于跨平台解决方案(假设您使用的是 C++)。

标签: c++ c pointers zlib


【解决方案1】:

实际上我使用这个 unzReadCurrentFile() 函数不正确,它允许在一个小缓冲区中逐部分读取,它返回复制的字节数,我们可以循环直到它返回 > 0

【讨论】:

    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2021-05-02
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多