NSMutabledata byteswithnocopy的问题

我正在尝试编写一个代码来从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)); 

从二进制数据编程指南

NSMutableData响应dataWithBytesNoCopy:length:,但无论如何都要复制字节,并立即释放缓冲区。

创建NSData后,它在访问缓冲区时出错。(在下面的代码中的memset中)

缓冲区立即释放。

malloced缓冲区指针和[数据字节]指针是不同的。

NSMutableData创建字节副本。