如何在Objective C中为C指针工作内存管理

时间:2012-07-24 15:54:24

标签: objective-c c pointers memory-management

对于下面的代码,基本上,我们在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, ...);

1 个答案:

答案 0 :(得分:4)

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