对于下面的代码,基本上,我们在ObjectiveC中调用C函数(funca和funcb)并使用C指针pX。出于某种原因,我们在调用funcb时点击了EXC_BAD_ACCESS,我们认为它可能与pX被释放或其他一些内存问题有关。所以问题是,这里可能出现什么问题?如果真的是因为pX提前发布了,我们怎么能解决它呢?在ObjectiveC中执行C的一般做法是什么,就像这种情况一样?
·H
@interface MyObject : NSObject {
X *pX;
}
的.m
// calling funca and get the value pX properly set
if (funca(&pX) != 0) {
// error;
}
// use the pX returned from funca
funcb(pX, ...);
答案 0 :(得分:4)
在Objective C中使用C“和在其他任何地方使用它没有区别。 Vanilla C指针存在于Objective C ref计数系统之外,因此它们永远不会被释放。他们是malloc()
'和free()
'd。我会验证funca
是否正确执行其工作,或者发布更多代码。