1

对于以下代码,本质上,我们在 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, ...);
4

1 回答 1

4

在“Objective C”中使用 C 和在其他任何地方使用 C 没有区别。Vanilla C 指针存在于 Objective C 引用计数系统之外,因此它们永远不会被释放。他们是malloc()'d和free()'d。我会验证funca它是否正确地完成了它的工作,或者可能会发布更多代码。

于 2012-07-24T16:03:26.340 回答