加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:54:54 所属栏目:Java 来源:网络整理
导读:我在c#中有以下代码,并且在使用JNA的 java中需要类似的功能: IntPtr pImage = SerializeByteArrayToIntPtr(imageData);public static IntPtr SerializeByteArrayToIntPtr(byte[] arr) { IntPtr ptr = IntPtr.Zero; if (arr != null arr.Length 0) { ptr = M
我在c#中有以下代码,并且在使用JNA的 java中需要类似的功能:
IntPtr pImage = SerializeByteArrayToIntPtr(imageData);

public static IntPtr SerializeByteArrayToIntPtr(byte[] arr)
        {
            IntPtr ptr = IntPtr.Zero;
            if (arr != null && arr.Length > 0)
            {
                ptr = Marshal.AllocHGlobal(arr.Length);
                Marshal.Copy(arr,ptr,arr.Length);
            }
            return ptr;
        }

解决方法

你想使用 Memory

这样使用它:

// allocate sufficient native memory to hold the java array
Pointer ptr = new Memory(arr.length);

// Copy the java array's contents to the native memory
ptr.write(0,arr,arr.length);

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读