1
NSDataオブジェクトを使用してメモリデータを保持します。しかし、NSData.bytesを使用してメモリデータにアクセスすると、メモリリークが発生します。 サンプルコードは以下の通りです:NSDataアクセスバイトによってメモリリークが発生する
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
のサンプルコードは、メモリリークが発生していない時に、メモリの終了私のアプリがクラッシュします非常にsimple.Butです。