objective-c - 在结构中传递指向指针的指针时出现 EXC_BAD_ACCESS?

标签 objective-c c arrays reference

我在结构中有一个 CGPoints 数组。添加另一个 CGPoint 时,我需要替换此数组。我发誓我做对了,它似乎工作了几次,但最终我会得到一个 EXC_BAD_ACCESS .我错过了什么?

这是结构,我已将其截断以删除大量不相关的项目。

typedef struct{
    CGPoint **focalPoints;
    NSUInteger focalPointCount;
    CGRect boundingRect;
}FocalPoints;

下面是我如何初始化它:

CGPoint *fPoints = (CGPoint *)malloc(sizeof(CGPoint));
FocalPoints focalInfo = {&fPoints, 0, rect};

请注意 focalInfo通过引用传递给另一个函数,如下所示:anotherFunction(&focalInfo) .

现在这是用新的点数组替换点数组的函数:

void AddFocalPoint (CGPoint focalPoint, FocalPoints *focal){
    if (focalPoint.x == CGFLOAT_MAX) return;
    if (!CGRectContainsPoint(focal->boundingRect, focalPoint)) return;
    int origCount = focal->focalPointCount;
    int newCount = origCount + 1;
    CGPoint *newPoints = (CGPoint *) malloc((newCount) * sizeof(CGPoint));
    for (int i = 0; i < newCount; i++)
        newPoints[i] = (i < origCount) ? *focal->focalPoints[i] : focalPoint; //error occurs here
    free(*focal->focalPoints);
    *focal->focalPoints = newPoints;
    focal->focalPointCount = newCount;
}

EXC_BAD_ACCESS错误出现在上面代码第8行:newPoints[i] = (i < origCount) ? *focal->focalPoints[i] : focalPoint; .那么我究竟做错了什么?

最佳答案

这有点遥不可及,但也许 *focal->focalPoints[i] 中的运算符优先级存在问题。您是否尝试根据要实现的目标添加括号?

关于objective-c - 在结构中传递指向指针的指针时出现 EXC_BAD_ACCESS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777594/

相关文章:

objective-c - 继承的@property 不能满足 <protocol> @property 吗?

ios - 用数组填充 UITableView

c - 为什么在 for 循环条件中不评估 sizeof 运算符?

php - 如果复选框被选中则回显已选中

c - 在 C 中用方法定义数组

iphone - 在退出和检索之前保存最后一个 NSManagedObject - 核心数据

iphone - 通过子类类型数组和调用类方法进行客观迭代

c - C中函数指针的递归声明

c - 如何检查文件是否在给定目录中

c - C语言中的快速排序算法对单词进行排序