java – 在jna中获取字节数组的指针

前端之家收集整理的这篇文章主要介绍了java – 在jna中获取字节数组的指针前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在c#中有以下代码,并且在使用JNA的 java中需要类似的功能
  1. IntPtr pImage = SerializeByteArrayToIntPtr(imageData);
  2.  
  3. public static IntPtr SerializeByteArrayToIntPtr(byte[] arr)
  4. {
  5. IntPtr ptr = IntPtr.Zero;
  6. if (arr != null && arr.Length > 0)
  7. {
  8. ptr = Marshal.AllocHGlobal(arr.Length);
  9. Marshal.Copy(arr,ptr,arr.Length);
  10. }
  11. return ptr;
  12. }

解决方法

你想使用 Memory

这样使用它:

  1. // allocate sufficient native memory to hold the java array
  2. Pointer ptr = new Memory(arr.length);
  3.  
  4. // Copy the java array's contents to the native memory
  5. ptr.write(0,arr,arr.length);

请注意,只要将使用内存的本机代码需要它,您就需要保留对Memory对象的强引用(否则,Memory对象将在收集垃圾时回收本机内存).

如果您需要更多地控制本机内存的生命周期,那么请在libc中映射malloc()和free(),然后使用它们.

猜你在找的Java相关文章