gpt4 book ai didi

ios - 存储对象的潜在泄漏

转载 作者:可可西里 更新时间:2023-11-01 05:02:50 25 4
gpt4 key购买 nike

我正在分析来自 SDK 的这段代码,并根据我最新问题的答案判断错误类型:

How to release correctly memory in iOS: Memory is never released; potential leak of memory pointed to by

dasblinkenlight 建议我创建一个 NSData 对象来释放我的 uint8_t *bytes...

但是在这段代码中:

/**
* this will set the brush texture for this view
* by generating a default UIImage. the image is a
* 20px radius circle with a feathered edge
*/
-(void) createDefaultBrushTexture{
UIGraphicsBeginImageContext(CGSizeMake(64, 64));
CGContextRef defBrushTextureContext = UIGraphicsGetCurrentContext();
UIGraphicsPushContext(defBrushTextureContext);

size_t num_locations = 3;
CGFloat locations[3] = { 0.0, 0.8, 1.0 };
CGFloat components[12] = { 1.0,1.0,1.0, 1.0,
1.0,1.0,1.0, 1.0,
1.0,1.0,1.0, 0.0 };
CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB();
CGGradientRef myGradient = CGGradientCreateWithColorComponents (myColorspace, components, locations, num_locations);

CGPoint myCentrePoint = CGPointMake(32, 32);
float myRadius = 20;

CGContextDrawRadialGradient (UIGraphicsGetCurrentContext(), myGradient, myCentrePoint,
0, myCentrePoint, myRadius,
kCGGradientDrawsAfterEndLocation);

UIGraphicsPopContext();

[self setBrushTexture:UIGraphicsGetImageFromCurrentImageContext()];

UIGraphicsEndImageContext();
}

我在这些行上遇到了同样的错误:

存储到“myColorspace”中的对象的潜在泄漏

CGGradientRef myGradient = CGGradientCreateWithColorComponents (myColorspace, components, locations, num_locations);

存储在“myGradient”中的对象的潜在泄漏

UIGraphicsPopContext();

我试过:

free(myColorspace);
free(myGradient);

但是我有同样的问题,我能做些什么来解决它

提前感谢大家的支持

最佳答案

仔细听错误告诉你什么。

“存储到 myColorspace 中的对象的潜在泄漏”

让我们看看色彩空间,看看我们是否能找到问题所在。 myColorspace 是在 CGColorSpaceCreateDeviceRGB 中创建的,因此保留计数为 +1,但之后从未释放。这是不平衡的,需要在最后释放。我们需要添加一个 CGColorSpaceRelease(myColorSpace);

“存储到 myGradient 中的对象的潜在泄漏”

同样的问题,保留计数 +1 的创建,没有相应的发布。添加一个 CGGradientRelease(myGradient);

不要对使用框架 Create 函数创建的任何内容使用 free。内部结构可能更复杂,而且 free 无法妥善处理所有内存。使用相应的 Release 函数。

关于ios - 存储对象的潜在泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18088271/

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