java - JNI释放内存

标签 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);
}

最佳答案

buf 是一个堆栈变量,它会随着方法返回而被回收,这里无需您执行任何操作。

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

关于java - JNI释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9818794/

相关文章:

java - 从java更新mySQL数据库上的int

c - 加载另一个共享库的共享库

java - 解决 Jetty 应用程序中的 java 内存泄漏问题

c - 这种 C 指针的使用不会泄漏内存吗?

Javascript dom操作内存泄漏

java - 检查 2 个字符串是否包含相同的字符?

java - Azure ClearDB : Access denied for user 'xxxx' to database 'xxxx'

java - 查找树中包含偶数个数据值的节点数

c - 函数my_find_node返回第一个节点出现的地址

只有 pthreads 的 C++ 定时器