我正在尝试编写代码来从 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));
From 二进制数据编程指南 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/BinaryData/Tasks/WorkingBinaryData.html#//apple_ref/doc/uid/20000717-149014
NSMutableData 响应 dataWithBytesNoCopy:length:,但字节被复制
无论如何,缓冲区会立即释放。
创建 NSData 后访问缓冲区时出错。(在下面代码的 memset 中)
缓冲区立即被释放。
malloced 缓冲区指针和[数据字节]指针是不同的。
NSMutableData
创建字节的副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)