• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 在大图像分辨率上执行时出现 EXC_BAD_ACCESS 错误

[复制链接]
菜鸟教程小白 发表于 2022-12-13 16:19:25 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我已经在图像上实现了一个递归函数,它调用它的相邻像素直到条件最终确定,我已经能够成功运行此代码,达到 200x200 图像分辨率,但是当图像大小增加时,它会因 EXC_BAD_ACCESS< 而崩溃 错误在以下堆栈行 ___lldb_unnamed_function782$$libicucore.A.dylib。我检查了我的代码并且无法检测到任何错误,可能是由于递归回调函数太多。如果有人有任何想法,请告诉我。

这是我的递归代码:

 -(void)magicImageContextunsigned char*)data pointCGPoint)point redunsigned char)red greenunsigned char)green blueunsigned char)blue bytesPerPixelNSInteger)bytesPerPixel bytesPerRowNSInteger)bytesPerRow sizelong long int)size widthNSInteger)width heightNSInteger)height maskedData:(unsigned char*)masked_data{
for(int x = point.x-1; x<=point.x+1; x++){
    for(int y = point.y-1; y<=point.y+1; y++){
        if((x == point.x) && (y == point.y)) {
        }
        else if((x<0) || (y<0) || (x>=width) || (y>=height)){
        }
        else if([self checkPixelMarkedAtPoint:CGPointMake(x, y) data:masked_data]){
            int byteIndex = (bytesPerRow * y) + x* bytesPerPixel;
            CGFloat red2   = (data[byteIndex] );
            CGFloat green2 = (data[byteIndex + 1]);
            CGFloat blue2  = (data[byteIndex + 2]);
            if([self checkColorThresholdWithRed1:red green1:green blue1:blue red2:red2 green2:green2 blue2:blue2]){
                NSLog(@"x= %d, y= %d %d",x,y,byteIndex);
                //mark pixels on masked image
                [self changemaskedData:CGPointMake(x,y) data:masked_data];
                [self magicImageContext:data point:CGPointMake(x, y) red:red green:green blue:blue bytesPerPixel:bytesPerPixel bytesPerRow:bytesPerRow size:size width:width height:height maskedData:masked_data];                }
        }
    }
}
}



Best Answer-推荐答案


如果您对图像的所有像素使用递归,那么输入大图像肯定会导致堆栈溢出。

考虑重写您的函数以使用显式堆栈和循环以避免递归。这也可以提高应用的性能,因为它避免了相对昂贵的函数调用。

关于iphone - 在大图像分辨率上执行时出现 EXC_BAD_ACCESS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12435404/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap