关于va_copy的问题,函数变参

#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);就没有出现问题

http://blog.chinaunix.net/uid-677314-id-3476440.html