1

たとえば、file1.cから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);
}

そして、file2.cのva_argを介してこの構造体を別の関数に渡したい

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によって収集されたデータは完全に間違っています(正しいデータではありません)。私はここで何が間違っているのですか?

4

1 に答える 1

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;
于 2012-06-21T18:25:54.767 に答える