すまん。64bit環境だと
printf("%u\n",(unsigned int)p);
→
printf("%lu\n",(unsigned long)p);
とするべきかな。