【问题标题】:JNI freeing up memoryJNI 释放内存
【发布时间】:2012-04-06 19:24:17
【问题描述】:

我的 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);
}

【问题讨论】:

  • 你应该担心NewStringUTF是否使用buf的副本

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


【解决方案1】:

buf是栈变量,方法返回时会被回收,这里不用你做。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    相关资源
    最近更新 更多