0
不知道dataArray
的~JniFloatArray
是否被调用,当com/emcjpn/sleep/SleepAlgorithmBreakException
被抛出?从JNI函数抛出java异常之后调用C++析构函数吗?
JNIEXPORT jobject JNICALL Java_com_emcjpn_sleep_SleepAlgorithm_nativePushNewDataAndCalculate(JNIEnv *env, jclass type,
jlong ptr, jfloatArray data_) {
JniFloatArray dataArray(data_, env);
jfloat *data = dataArray.getData();
SleepAlgorithm* algorithm = (SleepAlgorithm*)ptr;
jsize length = dataArray.length();
SleepAlgorithmResult result = algorithm->pushNewDataAndCalculate(data, data + length);
if (result.shouldBreak) {
jclass exception = env->FindClass("com/emcjpn/sleep/SleepAlgorithmBreakException");
env->ThrowNew(exception, "sleep calculation failed, invalid ecg data");
return NULL;
}
/*Some other code*/
}
您是否尝试在析构函数中放置断点? – efekctive
好主意。我会尝试 –