gpt4 book ai didi

java - 使用 JNI 将字节数组从 Java 传递到 C++ 而无需复制

转载 作者:行者123 更新时间:2023-11-30 02:30:26 25 4
gpt4 key购买 nike

<分区>

我想将一个大字节 [] 从 Java 传递到 C++。我知道我可以使用 Java ByteBuffers 在 C++ 和 Java 之间共享内存,如下所示:

    ByteBuffer bb;
bb = ByteBuffer.allocateDirect(3);
byte[] byteArray = new byte[] { 0x01, 0x02, 0x03 };
bb.put(byteArray);
modifyByteBuffer(bb); //native function

并通过以下方式在 C++ 中访问它:

uint8_t *iBuf = (uint8_t*) env->GetDirectBufferAddress(buf1);

但是,bb.put(byteArray) 操作是一个拷贝。如果我使用 ByteBuffer.wrap(byteArray),则无法使用 env->GetDirectBufferAddress 在 C++ 端访问字节数组。我怎样才能解决这个难题并传递 byte[] 而无需复制。

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