在我想要解析C结构的其他元素中,来自file1.c:
typedef struct mynode{
int* x;
int length;
}node;
int callerFunction(int myLength){
//memory space
node* n = (node*)malloc(sizeof(node));
//dummy values for explanation purpose only
double d = 3.14;
int max = 100;
//populate struct
n->length = myLength;
for(int i =0; i < n->length; i++)
n->x[i]= i;
//calling foo passing an structure
int result = foo(3,d,max,n);
}
我希望通过va_arg在file2.c
中将此结构传递给另一个函数int foo(int n,...){
int foo_max;
double foo_d;
node* foo_n;
va_list ap;
va_start(ap,n);
d = va_arg(ap,double);
foo_d = va_arg(ap,int);
foo_n = va_arg(ap,node*);
va_end(ap);
....
}
我认为我做的是正确的事情,但是如果我包含结构,foo收集的数据是完全错误的(不是正确的数据)。我在这里做错了什么?
答案 0 :(得分:2)
内部callerFunction
好像你没有为n->x
分配内存但使用它。
//populate struct
n->length = myLength;
n->x = malloc(n->lenght * sizeof(int)); //////////add this line
for(int i =0; i < n->length; i++)
n->x[i]= i;