次のコードでは、基本的に、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, ...);