【发布时间】:2015-05-14 03:38:00
【问题描述】:
我正在编写一个 jni 代码,其中我必须经常将 std::string 转换为 jstring,反之亦然,为此我使用以下函数
//std::string to jstring
const char *cons_ref = ANY_STD_STRING.c_str();
jstring jref = env->NewStringUTF(cons_ref);
//jstring to std::string
const char *cons_ref = env->GetStringUTFChars(ANY_JSTRING, 0);
std::string ANY_STD_STRING = cons_ref
但这会导致创建大量只读且无法删除的 const char*,从而导致内存泄漏。
是否有更好的技术来进行这些转换以避免内存泄漏。提前致谢。
【问题讨论】:
-
是什么让您认为代码导致内存泄漏?
-
你知道什么是 const char* 吗?
-
指向 const 字符串的指针
-
我猜你的意思是我可以创建任意数量的 const char*,并且不需要释放删除它们。
-
@CaptainObvlious 当我为较小的输入字符串运行我的代码时它工作正常,但是当我测试我的较大字符串输入的代码时它显示此错误 JNI ERROR (app bug): local reference table overflow (max =512) 并且添加到 JNI 本地引用表失败(有 512 个条目)