Обычно хорошо не иметь двух указателей, указывающих на одну и ту же память. Это потому, что если вы удалите один, другой будет висящим указателем.
Все, что вы делаете с памятью после удаления, это неопределенное поведение .
В вашем случае (я полагаю, вы забыли сделать p2=p1
, как подсказывает ваш вопрос), int x=*p2;
не определено, поскольку память, на которую указывает p2
, была удалена.