更新文件而不将其分配到内存中 - IOS

时间:2012-10-03 18:37:36

标签: objective-c memory malloc fopen fwrite

我试图在填充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来说太大的整个文件(相同的代码在模拟器中工作!!)。对于较小的文件,它在真实设备上也能完美无瑕!

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

感谢你

安德烈

0 个答案:

没有答案