#include
#include
void print(char* format,...);
void print(char* format,...)
{
va_list ptr;
va_list ptr_tmp;
va_start(ptr, format);
va_copy(ptr_tmp,ptr);
printf("print ptr: %p,%p\n",format, ptr);
vfprintf(stdout, format, ptr);
vfprintf(stdout, format, ptr);
printf("print ptr: %p,%p\n",format, ptr);
va_end(ptr);
}
int main()
{
int i=3,j=4;
char a[20]="hello world";
print("%d,%d,%s\n",i,j,a);
return 0;
}
为什么会产生段错误,
而把第二个 vfprintf(stdout, format, ptr);改成
vfprintf(stdout, format, ptr_tmp);就没有出现问题