请教JNI调用C++方法的内存管理问题

zzcoffeebean zzcoffeebean 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
请教个JNI的问题,看下面注释的地方,这个result指针所指内存是否需要手动释放?



JNIEXPORT jfloatArray JNICALL Java_game_recast_autoHeight(JNIEnv *env, jclass jobj, jint jsn, jfloatArray jpos, jint jflag) {
try{
float pos[3];
jfloat* tmp = env->GetFloatArrayElements(jpos, 0);
dtVcopy(pos, tmp);
float* result = posHight(jsn,pos,jflag);
_jfloatArray* resultArr = env->NewFloatArray(2);
env->SetFloatArrayRegion(resultArr, 0, 2, result);

//delete result; //???这个地方如果释放掉result指针,会导致java访问内存崩溃!

return resultArr;
}catch(exception& e){
std::cerr << "posHeight err:(" << jsn << ")" << e.what() << std::endl;
}
}


env->SetFloatArrayRegion(resultArr, 0, 2, result);
这句代码是不是让resultArr指向了result的地址,然后jvm会负责回收这个内存?
...全文
评论 7
收藏 已收藏
分享
返回顶部
zzcoffeebean
非技术区 23,404 成员 70,506 内容