我正在尝试顺序覆盖填充 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 来说太大的整个文件(相同的代码在模拟器中工作!!)。使用较小的文件,它也可以在真实设备上完美运行!
我可以更新文件而不将它们加载到内存中吗?
谢谢你
安德烈亚