構造体配列をそっくり交換する問題について質問します

struct dint
{
public:
int a;
int b;
};

void starswap(dint x[], dint y[])
{
int i;
dint* t=new dint[3];
for(i=0;i<3;i++)
{
t[i]=x[i];
}
for(i=0;i<3;i++)
{
x[i]=y[i];
}
for(i=0;i<3;i++)
{
y[i]=t[i];
}
delete[] t;
}