У меня есть некоторые классы, которые принимают указатели на экземпляры других классов в качестве аргументов и сохраняют их в своих закрытых членах. Если в клиентском коде я создаю объекты всех типов в стеке, то при возвращении основного они автоматически уничтожаются, и программа работает нормально. Но если я создаю те же объекты в куче, я должен удалить указатели на эти объекты в деструкторах класса (ов), и снова программа выполняется нормально. Однако, если я сохраню изменения и снова создаю объекты в стеке, происходит повреждение памяти из-за двойного удаления. Как я могу заставить мои классы уничтожать указатели в любом случае без изменения основного клиентского кода?