jobject呼び出されたときに Java に戻る JNI メソッドを実装する C コードがいくつかあります。C コードでは、struct次のような a を少しいじっています。
typedef struct {
char* something
int somethingElse
} awesomeStruct;
C ライブラリではmalloc、構造体とchar*.
JNI メソッドの最後でを返す場合はjobject、次のようにします。
awesomeStruct *mystruct = getResult();
jstring somethingString;
jint somethingElseInt;
somethingString = (*env)->NewStringUTF(env,mystruct->something);
somethingElseInt = mystruct->somethingElse;
ret = (*env)->NewObject(env,javaClass,method,somethingString, somethingElseInt);
return ret;
うまくいけば、これは、構造体にあった文字列と int の 2 つのパラメーターを使用してmethodメソッド onを呼び出す必要があります。javaClass
getResult()struct と char 配列に対してaを行うとすれば、mallocこれを解放するにはどうすればよいですか? return ステートメントのいずれかmystructまたはその前に解放しようとすると、エラーが発生します。これは、return オブジェクトに、free を呼び出すと存在しなくなったものへの参照が含まれているためだと思います。mystruct->somethingDebug assertion Failed - CrtlsValidHeapPointer
この漏れを止めるにはどうすればよいですか?