C 如何为JNI对象数组动态分配内存

C 如何为JNI对象数组动态分配内存,c,java-native-interface,dynamic-memory-allocation,C,Java Native Interface,Dynamic Memory Allocation,我正在用C语言开发JNI。在这里,我创建了一个大小为4000的对象数组。根据我的要求,阵列大小必须动态增长。如何动态分配内存?我尝试过使用malloc。但我无法做到这一点 以下是我尝试过的: OriginalArray = (*env)->NewObjectArray(env, 4000, tradeObject, NULL); 根据我的要求,阵列大小必须动态增长 数组是一个容器对象,它包含固定数量的值 单一类型的。数组的长度是在数组 是创建的。创建后,其长度是固定的 如果数据的大小必

我正在用C语言开发JNI。在这里,我创建了一个大小为4000的对象数组。根据我的要求,阵列大小必须动态增长。如何动态分配内存?我尝试过使用
malloc
。但我无法做到这一点

以下是我尝试过的:

OriginalArray = (*env)->NewObjectArray(env, 4000, tradeObject, NULL);
根据我的要求,阵列大小必须动态增长

数组是一个容器对象,它包含固定数量的值 单一类型的。数组的长度是在数组 是创建的。创建后,其长度是固定的

如果数据的大小必须更改,则必须使用Java数组以外的其他东西来保存数据


或者,您可以在每次需要更改大小时分配一个新数组,并将数组元素从旧数组复制到新数组。

Ok。有没有办法在JNI中动态分配内存?我试着第一次分配内存到20,然后我试着重新分配到40。但这对我不起作用。我尝试了以下方法:
jobjectArray tradeOriginalArray=NULL;sizeofthearray=20;tradeOriginalArray=malloc(sizeofthearray*sizeof(jobjectArray));sizeofthearray=40;tradeOriginalArray=realloc(tradeOriginalArray,sizeof(jobjectArray)*sizeofthearray)Java内存管理与通过
malloc()
realloc()
等提供的内存管理完全分开。就像在C中为指针分配内存一样,我可以在JNI中为对象数组动态分配内存吗?不可以。一旦在Java中或在JNI中使用
NewObjectArray()
创建了数组,它的大小是固定的。如果你想要一个不同大小的数组,你必须创建一个新的数组。创建后,它的长度是固定的。您无法调整Java数组的大小。“我无法实现这一点”不是一个问题描述。我正在尝试第一次为20分配内存,然后尝试将其重新分配到40。但这对我不起作用。我尝试了以下操作:
jobjectArray tradeOriginalArray*;sizeofthearray=20;tradeOriginalArray=malloc(sizeofthearray*sizeof(jobjectArray));sizeofthearray=40;tradeOriginalArray=realloc(tradeOriginalArray,sizeof(jobjectArray)*sizeofthearray)为什么您认为需要使用JNI来实现这一点?对于熟悉JNI的人来说,使用Java HashSet对象之类的东西来解决这将是一个乏味的问题。用JNI做这件事是为了让事情变得简单和困难,实际上我需要将这个对象数组返回到java代码中。服务器代码以C语言返回,因此我们使用JNI。是否可以为JNI中的对象数组动态分配内存?。。。