我有一个函数,它需要可变数量的指针,我想修改它。它看起来像:
void myPointerModifyingFunction (int num_args, ... ) {
void *gpu_pointer;
char mem_type;
va_list vl;
va_start(vl,num_args);
for (int i=0;i<num_args;i++) {
gpu_pointer=va_arg(vl,void*);
gpu_pointer = CUT_Malloc(100);
}
}
CUT_Malloc函数分配内存(使用CUDA在GPU上)并返回地址。但很明显我没有正确使用这个地址,因为gpu_pointer将在此函数结束时被销毁。 如何修改作为变量参数列表的一部分传递的指针?
答案 0 :(得分:1)
传递给函数的指针变为参数值,即存储在函数堆栈(模结构)上,即类似于局部变量。您可能需要双指针,例如va_arg(vl,void**)
,并将其称为myPointerModifyingFunction( 2, &ptr0, &ptr1 );
。
希望这有帮助。