2016-10-20 77 views
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; 
} 

我需要在这里发布strcontent吗?为什么?JNI:我应该何时释放资源?

回答

2

No. str引用了一个Java对象,它继续存在于此JNI方法之外,因为它是返回值。 content是一个C++本地对象,当它的声明范围退出时它会被自动销毁。