Указатели не создают динамическое выделение памяти. Указатели и выделения - это совершенно разные вещи.
Если вы копируете указатель, который указывает на динамически выделенную память, у вас есть два указателя, указывающие на одну и ту же выделенную память. Поскольку вы скопировали его, он уже указывает на блок памяти. В частности, если используется созданный компилятором конструктор копирования, новый указатель будет указывать на то же самое, что и старый указатель. Вам не нужно ничего делать с этим, если все в порядке.
У вас есть проблема, когда освободить память. Двойное освобождение обычно приводит к повреждению кучи, что очень неприятно. Не освобождение этого приведет к утечке памяти, которая может быть приемлемой в некоторых обстоятельствах. Освобождение его до того, как другой указатель закончится, также вызовет проблемы. По этой причине люди, имеющие несколько указателей на одну и ту же память, часто идут в проект Boost и используют свой шаблон shared_ptr (который будет в готовящемся новом стандарте и присутствует в большинстве современных систем).
Если вы хотите, чтобы каждый указатель указывал на отдельные фрагменты памяти, вы должны настроить это, написав свой собственный конструктор копирования, выделив новый фрагмент и скопировав в него необходимые данные. (Вы также должны написать свой собственный оператор присваивания, по тем же причинам и свой собственный деструктор, чтобы вы могли освободить память. Существует эмпирическое правило, называемое Правило трех, которое говорит, если вам нужно написать свою собственную копию конструктор, оператор присваивания или деструктор, вам, вероятно, нужно написать их все.)