3

mallocedバッファーから NSMutableData を作成するコードを作成しようとしています。freewhendone = YES を使用し
ました。
バイト] ポインタが異なります。

これらについての説明はありますか?

UWORD8 *rgb_buffer = malloc(u4_stride * u4_height * 3);

NSMutableData *rgbData = [NSMutableData dataWithBytesNoCopy:rgb_buffer

                                                     length:(u4_stride * u4_height * 3)

                                               freeWhenDone:YES];
memset(rgb_buffer, 0, (u4_stride * u4_height * 3));
4

1 に答える 1

3

バイナリデータプログラミングガイドより

NSMutableData は dataWithBytesNoCopy:length: に応答しますが、バイトはとにかくコピーされ、バッファはすぐに解放されます。

NSData が作成された後にバッファにアクセスするとエラーが発生します (以下のコードの memset で)。

バッファはすぐに解放されます。

malloced バッファー ポインターと [データ バイト] ポインターが異なります。

NSMutableDataバイトのコピーを作成します。

于 2013-10-15T12:29:17.940 に答える