Memory NSData访问字节导致内存泄漏
我使用NSData对象来维护内存数据。但是当我使用NSData.bytes访问内存数据时。这将导致内存泄漏。 示例代码如下所示:Memory NSData访问字节导致内存泄漏,memory,memory-leaks,nsdata,Memory,Memory Leaks,Nsdata,我使用NSData对象来维护内存数据。但是当我使用NSData.bytes访问内存数据时。这将导致内存泄漏。 示例代码如下所示: char buf[12]; @interface ViewController () @property (nonatomic, copy) NSData *tempData; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self
char buf[12];
@interface ViewController ()
@property (nonatomic, copy) NSData *tempData;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.tempData = [[NSData alloc] initWithBytes:buf length:12];
[self loopReadData];
}
- (void)loopReadData {
while(true) {
[self calcData:self.tempData];
}
}
- (void)calcData:(NSData *) data {
const void *dataPtr = data.bytes; ///< memory leak
sleep(0.1);
}
@end
charbuf[12];
@界面视图控制器()
@属性(非原子,复制)NSData*tempData;
@结束
@实现视图控制器
-(无效)viewDidLoad{
[超级视图下载];
self.tempData=[[NSData alloc]initWithBytes:buf length:12];
[自循环读取数据];
}
-(void)loopReadData{
while(true){
[self-calcData:self.tempData];
}
}
-(void)calcData:(NSData*)数据{
const void*dataPtr=data.bytes;//<内存泄漏
睡眠(0.1);
}
@结束
示例代码非常简单。但是如果没有内存存在,将导致内存泄漏并使我的应用程序崩溃。如果我在代码中添加autoreleasepool。再次没有内存泄漏
- (void)loopReadData {
while(true) {
@autoreleasepool {
[self calcData:self.tempData];
}
}
}