p = malloc(0);

↑0バイトの領域確保しても問題ないですか?
常にNULLでぃすか?