我正在尝试编写代码以从malloced buffer创建NSMutableData。我使用了freewhendone = YES
1)创建NSData后,在访问缓冲区时出错。(在下面代码的memset中)
2)malloced缓冲区指针和[数据字节]指针是不同的。
对这些有什么解释吗?
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));
答案 0 :(得分:3)
来自Binary Data Programming Guide
NSMutableData响应dataWithBytesNoCopy:length:,但是复制了字节 无论如何,缓冲区立即被释放。
在创建NSData后访问缓冲区时出错。(在下面的代码中的memset中)
立即释放缓冲区。
malloced缓冲区指针和[数据字节]指针不同。
NSMutableData
创建字节副本。