我知道有很多问题存在同样的问题,但没有人帮助过我。
我有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];
}
}
答案 0 :(得分:0)
我猜您正在使用float *
来享受C指针特征并执行sum[i]
。但是在这里你是ObjectiveC,使用NSArray填充浮动。
答案 1 :(得分:0)
我终于明白了。
这是愚蠢的事情。我有4个花车的malloc内存,我问他持有人[4]这是5个元素。
感谢大家的帮助