基本上我在这里想要实现的是拥有一个全局变量,其中包含指向结构的指针数组,该结构的大小在编译时是未知的——在我下面的示例中是my_struct **tab
. 在最终版本中,我想调用一个 JNI 方法来初始化我的指针数组,并且我想保留它们以供其他方法使用。
不幸的是,我不是 C 程序员,我真的很努力解决这个问题。下面我展示了我尝试做的事情;显然,它不起作用。任何建设性的反馈都会非常有帮助。
(对不起,包含它应该是 C 代码的误解)
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int tag;
} my_struct;
my_struct **tab;
void * get_pointer_to_struct() {
my_struct * s;
/* allocate memory */
if ((s = (my_struct *) malloc(sizeof (my_struct))) == NULL) {
return NULL;
}
return s;
}
void free_structures(int j) {
for (int a; a < j; a++) {
my_struct *s;
s = (my_struct *) tab[a];
/* free memory */
free(s);
tab[a] = NULL;
}
}
void init_pointers_array(int j) {
my_struct * temp_arr[j];
for (int i = 0; i < j; i++) {
temp_arr[i] = (my_struct *) get_pointer_to_struct();
temp_arr[i]->tag = i;
}
tab = temp_arr;
}
int main() {
//initialization
init_pointers_array(10);
//usage
for (int a = 0; a < 10; a++) {
if (tab[a]) {
my_struct * str_tmp = tab[a];
printf("Integer that you have entered is %d\n", str_tmp->tag);
}
}
//free mem
free_structures(10);
return 0;
}