>>593
buf = malloc(size);
  :
memcpy(buf, p1, size);
memcpy(p1, p2, size);
memcpy(p2, buf, size);
  :
free(buf);

て感じじゃないの。swapするときにいちいちmalloc、freeしてたら遅くなるから、
qsort呼ばれたときにbufを確保して使いまわして、終わったときにfreeだろうな。
他に方法あるかな。