void func(void *p1,void *p2)
{
int i;
long *lp1=p1,*lp2=lp2;
for(i=0;i<4;i++,lp1++,lp2++)
*lp1=*lp2;
}

きちんとコピーされる保証はない?