我试图在填充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来说太大的整个文件(相同的代码在模拟器中工作!!)。对于较小的文件,它在真实设备上也能完美无瑕!
我可以更新文件而不将其加载到内存中吗?
感谢你
安德烈