Полагаю, это происходит от того, что в момент выделения памяти для массива, p всё ещё занят предыдущим значением, и поэтому память освободиться не может. В реальных задачах этот эффект может быть не заметен.