您好,我有以下情况
#define CONSTANT 10
struct structA{
int var1;
int var2[CONSTANT];
};
main(){
structA *varA = NULL;
int i;
/* some C code */
varA = mmap(0,..);
for(i = 0; i < CONSTANT; i++){
varA.var2[i] = /* C code */ ;
}
/* C code */
}
此处structA
的var2
数组中的元素个数是常量,因此可以直接引用varA.var2[i]
。但是如果要在运行时动态确定数字CONSTANT
,应该如何修改结构体定义?
最佳答案
最干净的方法是使用 C99 灵活数组成员:
struct structA{
int var1;
int var2[];
};
然后你可以mmap(NULL, sizeof(int) * (num + 1), ...)
。只是要小心灵活的数组成员,sizeof
对他们的行为很有趣(不包括他们的大小)。
如果您不能/不会使用灵活的数组成员,您可以使用指针代替数组,并为它单独使用 mmap
内存。
关于c - 使用 mmap() 如何创建动态大小的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533160/