iphone - NSMutabledata byteswithnocopy 的问题

标签 iphone ios objective-c nsdata nsmutabledata

<分区>

我正在尝试编写代码以从 malloced 缓冲区创建 NSMutableData。我使用 freewhendone = YES
1) 创建 NSData 后访问缓冲区时出错。(在下面代码的 memset 中)
2) malloced buffer指针和[data bytes]指针不同。

这些有什么解释吗?

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));

最佳答案

来自 Binary Data Programming Guide

NSMutableData responds to dataWithBytesNoCopy:length:, but the bytes are copied anyway and the buffer is freed immediately.

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

缓冲区立即释放。

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

NSMutableData 创建字节副本。

关于iphone - NSMutabledata byteswithnocopy 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19380363/

相关文章:

iphone - 一个线程如何确定另一个线程是否已崩溃?

ios - SwRevealview 幻灯片菜单中的 Menuviewcontroller 未居中对齐

objective-c - 将类作为参数传递?

iphone - 使用过的 iPhone 应用程序测试 - 基础知识

iphone - 在 iPhone SDK 中旋转 UI 按钮

iphone - 在 UITableView 的 iOS 文档目录中列出保存的文件?

objective-c - 你如何改变 Cocoa 中窗口关闭按钮的状态?

iphone - 核心数据获取最后 50 个对象?

ios - 使用 uibezierpath 制作一个非常简单的图表

ios - 如何从服务器中删除 JSON 形式的食谱?