JNI:我什么时候应该释放资源?

问题描述 投票:0回答:1
JNIEXPORT jstring JNICALL Java_com_xxx_xpdf_PdfToText_getTextOnly(JNIEnv *env, jclass obj,
                                                                 jstring pdf_path) {
  const char *pdf = env->GetStringUTFChars(pdf_path, 0);

  std::string content;
  unsigned int i = getTextFromPDF(pdf, &content);

  env->ReleaseStringUTFChars(pdf_path, pdf);

  const char *result = content.c_str();
  jstring str = env->NewStringUTF(result);

  return str;
}

我需要在这里释放

str
content
吗?为什么?

c++ java-native-interface
1个回答
2
投票

不。

str
指的是在该 JNI 方法之外继续存在的 Java 对象,因为它是返回值。
content
是一个 C++ 本地对象,当其声明范围退出时会自动销毁。

© www.soinside.com 2019 - 2024. All rights reserved.