【发布时间】: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++)。