通常,如果要将指针从C转移到Java,建议使用,
long以便在平台为64位的情况下,有足够的位来保存指针值。
然后,看看
ByteBuffer.allocateDirect()哪个
ByteBuffer实例创建了一个可以与C共享内存的实例。您可以
ByteBuffer从Java端分配这样的直接指令,然后将其作为A
jobject传递给JNI函数,并在此JNI函数内部使用该
GetDirectBufferAddress函数。
另一种方法是
NewDirectByteBuffer从本机端使用JNI函数包装内存的本机区域。它使您
jobject可以回到Java端(注意本地和全局引用)。请注意以下事实:一旦
ByteBuffer创建了包装本机内存的直接目录,您仍需负责管理本机内存:在某些时候,您将必须调用
deletebuf;本机代码,Java不会为您完成此操作。



