gpt4 book ai didi

memory-leaks - 从 ALAssetRepresentation 获取字节时内存泄漏

转载 作者:行者123 更新时间:2023-12-02 04:50:17 25 4
gpt4 key购买 nike

我正在上传相机胶卷中的视频和图像。上传完成后,我得到 32 字节的内存泄漏。仪器显示泄漏在下方

   NSUInteger readStatus = [rep getBytes:buffer fromOffset:_startFromByte length:chunkSize error:NULL];

但我看不出那行有什么问题。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
__block __typeof__(self) _self = self;

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset) {
ALAssetRepresentation *rep = [myasset defaultRepresentation];
NSUInteger chunkSize = CHUNK_SIZE;
uint8_t *buffer = malloc(chunkSize);
NSUInteger readStatus = [rep getBytes:buffer fromOffset:_startFromByte length:chunkSize error:NULL];

if (readStatus == 0) {
// Free up memory so we don't leak.
free(buffer);
dispatch_sync(dispatch_get_main_queue(), ^ {
[_self cleanupConnectionSuccessful:NO];
});
return;
}

NSData *bytes = [NSData dataWithBytes:buffer length:readStatus];
free(buffer);

dispatch_sync(dispatch_get_main_queue(), ^ {
[_self prepareRequestAndUploadData:bytes];
});
};

ALAssetsLibraryAccessFailureBlock failureBlock = ^(NSError *err) {
NSLog(@"Error: %@", [err localizedDescription]);
};


[_assetslibrary assetForURL:_fileUrl resultBlock:resultblock failureBlock:failureBlock];
});

最佳答案

只需添加@autoreleasepool block ,以便清除任何自动释放的对象。看起来 ARC 在 iOS7 之后发生了一些变化

@autoreleasepool {
NSUInteger readStatus = [rep getBytes:buffer fromOffset:_startFromByte length:chunkSize error:NULL];
}

关于memory-leaks - 从 ALAssetRepresentation 获取字节时内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29346681/

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