2

我正在尝试顺序覆盖填充 0 的现有文件上的字节。

我只是这样打开文件:

File *filePointer = fopen(filePath, "rb+");

然后我以这种方式写入文件:

fwrite(buffer, 1, length, filePointer);

其中 buffer 的类型是 (const uint8_t *),length 是它要写入的缓冲区的大小。

我面临的问题是,对于大文件(例如 500MB),我得到一个 malloc 错误:

    malloc: *** mmap(size=570056704) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug

我认为这是因为 fwrite 试图在内存中加载对于 iphone ram 来说太大的整个文件(相同的代码在模拟器中工作!!)。使用较小的文件,它也可以在真实设备上完美运行!

我可以更新文件而不将它们加载到内存中吗?

谢谢你

安德烈亚

4

0 回答 0