gpt4 book ai didi

java - 如何使用 JNA Pointer 将数据写入内存?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:47:20 25 4
gpt4 key购买 nike

我有一个指向内存的指针,例如:

Pointer pData = new Memory(65536);

我需要从位置 8 开始获取该内存的指针,因为我想将那部分内存(从 8 到 65535)发送到 native C API。

我用过:

pData8 = pData.getPointer(8);

为了获取从位置 8 开始的指针,然后我尝试使用以下方法向 pData8 写入一些内容:

pData8.setInt(0xAAAA);

只是为了验证我在正确的位置写入但我得到错误:无效的内存访问。

如何获得指向内存部分的有效指针并能够在其上写入?

详细信息下方:

    80 Pointer pM = new Memory(65536);
81 Pointer p = pM.getPointer(4);
82 pM.setInt(0, 0xFFFF);
83 p.setInt(0, 0xBBBB);

Exception in thread "main" java.lang.Error: Invalid memory access
at com.sun.jna.Native.setInt(Native Method)
at com.sun.jna.Pointer.setInt(Pointer.java:1124)
at it.caen.dig.Demo.main(Demo.java:83)

最佳答案

您似乎使用了错误的 API。 getPointer 返回在该偏移处找到的值作为指针(可能指向任何地方)。如果您想获得指向该偏移量的指针,请使用 share:

Provide a view of this memory using the given offset to calculate a new base address.

Pointer pM = new Memory(65536);
Pointer p = pM.share(4);
pM.setInt(0, 0xFFFF);
p.setInt(0, 0xBBBB);

关于java - 如何使用 JNA Pointer 将数据写入内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50638513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com