hos*_*sir -1 memory-leaks objective-c
我在以下目标c代码中遇到内存泄漏问题.的粗体带星号(***
)线与内存泄漏(在仪器提到的)的行.有什么想法吗?谢谢.
- (UIImage*)part:(float)part ofImage:(UIImage*)imgObject withMask:(UIImage*)imgMask {
UIImage *imgResult = nil;
CGRect rcMask = CGRectMake(0.0f, 0.0f, imgMask.size.width, imgMask.size.height);
CGRect rcObject = CGRectMake(0.5f * (rcMask.size.width - imgObject.size.width), 0.0f, imgObject.size.width, imgObject.size.height * part);
BytePtr pictureData = (BytePtr)malloc(rcMask.size.width * rcMask.size.height * 4);
CGContextRef pictureContext = CGBitmapContextCreate(pictureData, rcMask.size.width, rcMask.size.height,8, rcMask.size.width * 4,CGImageGetColorSpace(imgObject.CGImage), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextClipToMask(pictureContext, rcMask, imgMask.CGImage);
CGImageRef imgInRect;
imgInRect = CGImageCreateWithImageInRect(imgObject.CGImage, rcObject);
CGContextDrawImage(pictureContext, rcObject, imgInRect);
CGImageRelease(imgInRect);
***imgResult = [UIImage imageWithCGImage:CGBitmapContextCreateImage(pictureContext)];***
CGContextRelease(pictureContext);
free(pictureData);
return imgResult;
}
Run Code Online (Sandbox Code Playgroud)
imgResult = [UIImage imageWithCGImage:CGBitmapContextCreateImage(pictureContext)];
Run Code Online (Sandbox Code Playgroud)
您创建一个CGImage
,将其传递给UIImage
工厂方法,然后忘记它.你正在泄漏CGImage
.
改为:
CGImageRef cgResult = CGBitmapContextCreateImage(pictureContext);
if (cgResult) {
imgResult = [UIImage imageWithCGImage: cgResult];
CGImageRelease(cgResult);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
217 次 |
最近记录: |