我有这个C ++代码:
char *buffer = new char[100];
/*
* ...populate this char array with some data...
*/
jobject jbuffer = env->NewDirectByteBuffer(buffer, 100);
之后,我想将我在C ++中创建的DirectByteBuffer传递给Java。
我有两个问题:
env->NewDirectByteBuffer(buffer, 100)
清除char数组缓冲区中的数据?这是一种正确的方法吗?答案 0 :(得分:0)
jobject jbuffer = env->NewDirectByteBuffer(buffer, 100);
为Java对象创建本地引用。在明确释放时,或者如果您使用PushLocalFrame()/PopLocalFrame(),或者在分配此本地引用的JNI函数返回时,它将被标记为未使用。
之后,GC将决定按照与常规Java对象相同的规则删除缓冲区。