gpt4 book ai didi

cocoa - NSMutableData datawithBytesNoCopy :length:freeWhenDone: seems to make a copy of the buffer provided to it

转载 作者:行者123 更新时间:2023-12-03 16:14:09 29 4
gpt4 key购买 nike

根据Apple文档,类方法

+datawithBytesNoCopy:length:freeWhenDone:

继承自NSData

Creates and returns a data object that holds a given number of bytes from a given buffer.

但是

NSUInteger len = 1024;
char *buffer = malloc(len);
NSMutableData *data = [NSMutableData dataWithBytesNoCopy:buffer length:len freeWhenDone:YES];
char *dataBytes = data.mutableBytes;
NSLog(@"%@", dataBytes == buffer ? @":D" : @":(");

打印

:(

该方法似乎实际上复制了一份副本,而我期望它不会这样做。我是否以错误的方式使用它?等效的 NSData 方法按预期工作。如何创建一个指向已存在缓冲区的 NSMutableData 对象而不获取任何所有权?

最佳答案

我猜你就是做不到你想做的事。毕竟,如果您有一个 NSMutableData 并向其附加更多数据,则需要重新分配缓冲区,并且不再使用您提供的指针。

苹果的Binary Data Programming Guide表示在 NSMutableData 的情况下,无论如何都会复制字节。

关于cocoa - NSMutableData datawithBytesNoCopy :length:freeWhenDone: seems to make a copy of the buffer provided to it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770265/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com