我需要在 JNI C 函数中分配字节数组。然后将此数组作为 byte[]
对象传输到 Java 代码中。我知道有一个函数 NewByteArray
,但它只接受字节数组的大小作为输入,所以我不能使用自定义内存分配函数。在我的例子中,我需要使用来自 Linux 的非常具体的非标准 malloc 类分配函数。由于资源非常有限,不应进行额外的复制。
最佳答案
如果您使用 byte[]
,那么您必须从 Java 堆中分配它并允许它控制您的内存管理。
但是,您可以使用 ByteBuffer
,它允许您在 native 代码中执行内存管理。您可以在 native 代码中分配一 block 内存,并在没有副本的情况下从 Java 访问它。
关于java - JNI native 函数内的自定义内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25368049/