私は、とりわけゼロで埋められたファイルを保存する必要があるコードを作成しています。 10MBから1GBの空白のファイルを作成することも期待できます。空白のファイルをObjective-Cに保存します
それは、このUnixコマンドのようになります。私は大きな値(* 1024 1024 * 10をしようとした場合
int totalSize = 1024*1024;
char buf[totalSize];
strcpy(buf,"");
NSData *theData = [NSData dataWithBytes:buf length:sizeof(buf)];
//NSLog(@"%@", theData);
NSLog(@"%lu", sizeof(buf));
[theData writeToFile:@"/Users/foo/Desktop/my_image.dsk" atomically:YES];
しかし:私は小さなサイズで、この1つの作業を行うことができ
dd if=/dev/zero of=my_image.dsk count=20480
たとえば、)、クラッシュします。 は、だから私は試してみました:
NSFileManager *ddd = [[NSFileManager alloc ] init];
[ddd createFileAtPath:@"/Users/foo/Desktop/my_image.dsk" contents:[NSData data] attributes:nil];
それは空のファイルを作成しますが、ファイルサイズがゼロであるので、良いではありません。ゼロであってはなりません。
私は何時間も成功を収めて答えを見つけようと過ごしました。私はObj-Cでこれをやりたいと思っていますが、Cがオプションになります。
お願いします。
ありがとうございます!
- 編集 -
みんなありがとう、しかし、もう一つは:それはメモリ上のすべてを割り当てることなく書くことは可能でしょうか?
スタックに割り当てるためクラッシュします。あなたはスタック上に限られたメモリしか持っていません。スタックに1 MBをそのまま割り当てようとしていますが、mallocとmemsetの呼び出しを使う方が良いです。 –
@ RichardJ.RossIII:一般的には 'malloc'と' memset'は使わず、代わりに 'calloc'を使うべきです。あなたはそのように多くのメモリを節約できます。 –
@DietrichEpp本当ですか?私は他の方法を聞いたことがあり、memsetはcallocコールよりも優れています。私が聞いただけで、どちらかの方法を教えてもらえません。 –