Когда вы копируете WrapArrayShallow
, теперь есть два указателя, указывающие на один и тот же массив, и когда любой WrapArrayShallow
уничтожается, вы delete[]
массив.
Ваша программа демонстрирует неопределенное поведение, он использует указатель, который был признан недействительным, когда второй WrapArrayShallow
уничтожен, и вы delete[] pca
.
Вам необходимо координировать действия между различными WrapArrayShallow
объектами, чтобы последний оставшийся в живых delete[]
s массив, когда он уничтожен. Самый простой способ - использовать std::shared_ptr<char[]>
вместо char *