线程1:EXC_BAD_ACCESS代码= 1浮动*

时间:2013-12-02 09:54:17

标签: ios xcode memory exc-bad-access

我知道有很多问题存在同样的问题,但没有人帮助过我。

我有Object DimensionItemHolder和property:

@property(nonatomic) float *  sum;

在递归函数中我有:

DimensionItemHolder * holder = [self getDimensionItemWhitIndex:[dimensionItem.dimItemID shortValue]];

if (holder)
{

    NSLog(@"%f , %f , %f , %f , %f  : %p", holder.sum[0],holder.sum[1],holder.sum[2],holder.sum[3],holder.sum[4] , holder.sum);

    [self.itemOrderdArray removeObject:holder];
    [self substractSum:holder.sum];
    NSLog(@"%p", holder.sum);
    return holder.sum;
}

经过几次迭代后xcode抛出

Thread 1: EXC_BAD_ACCESS(code = 1, address 0xc080000c) 

在第

NSLog(@"%p", holder.sum);

我发现它必须执行白方功能

[self substractSum:holder.sum];

(如果我评论它有效)

功能是:

-(void)substractSum:(float *)subSum{
if (subSum) {
    self.sum[0] = self.sum[0] - subSum[0];
    self.sum[1] = self.sum[1] - subSum[1];
    self.sum[2] = self.sum[2] - subSum[2];
    self.sum[3] = self.sum[3] - subSum[3];
    self.sum[4] = self.sum[4] - subSum[4];
}

}

2 个答案:

答案 0 :(得分:0)

我猜您正在使用float *来享受C指针特征并执行sum[i]。但是在这里你是ObjectiveC,使用NSArray填充浮动。

答案 1 :(得分:0)

我终于明白了。

这是愚蠢的事情。我有4个花车的malloc内存,我问他持有人[4]这是5个元素。

感谢大家的帮助