тут вроде все легко и все работает, но в условии задачи есть такое требование:
"надо корректно обрабатывать ситуацию повторного вызова деструктора. В этом случае деструктор не должен пытаться освобождать в динамической памяти объекты повторно"
При таких входных данных за задачу лучше вообще не браться. По ходу, автор задачи просто не в теме. Вообще. Неизвестно, что ему ещё в голову взбредёт.