用JNI中引用的方式处理,在JNI C函数中创建一个JString返回给JAVA层,同时把这个对象作为引用放到外面。 然后再写一个C函数,进行释放操作。 类似这样的. jchar *cc = 0; jstring getString(){ cc = "hello,guy"; return newStringUtf(cc); } void release(){ cc = 0; }
返回到java中的对象,会被jvm管理,所以不用担心它不会被回收,在jni中,只有在C端结束的对象需要被free掉,即使在java中生成,但是在C端使用并未返回的对象,会出现内存泄露,因此,需要free,通过return 返回到java中,并且是C中生成的对象,并不需要手动free。
80,476
社区成员
91,392
社区内容
加载中
试试用AI创作助手写篇文章吧