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