JNI释放内存

时间:2012-03-22 08:39:27

标签: java c memory-leaks java-native-interface

我的C很生疏。考虑上面的代码:我必须释放内存用于buf或每次调用使用相同的buf数组吗?什么是最佳做法?

JNIEXPORT jstring JNICALL Java_test_version
(JNIEnv *env, jobject obj, jint handle) {

    struct VersionNumber ver;
    versionNumber_get((void *) handle, &ver);

    char buf[30];
    snprintf(buf, 30, "%d", ver.num);

    return (*env)->NewStringUTF(env, buf);
}

1 个答案:

答案 0 :(得分:2)

buf是一个堆栈变量,它会在方法返回时被回收,没有什么可以在这里做的。

另外,因为它是一个堆栈变量,它将被分配给每个方法调用。