Возможно, вы захотите использовать какой-нибудь интеллектуальный указатель (см., Например, библиотеку Boost ).Идея состоит в том, что вместо того, чтобы управлять памятью вручную (то есть вызывать удаление явно, когда вам больше не нужен объект), вы используете RAII , чтобы выполнить эту работу за вас.
Проблема с ручным управлением памятью (и в целом с управлением ресурсами) заключается в том, что трудно написать программу, которая должным образом освобождает всю память - потому что вы забыли, или позже, когда вы измените свой код, не поймете, что были некоторыедругая память, которая должна была быть освобождена.
RAII в C ++ использует тот факт, что деструктор объекта, выделенного из стека, вызывается автоматически, когда этот объект выходит из области видимости.Если логика деструктора написана правильно, последним объектом, который ссылается (управляет) на динамически распределяемые данные, будет тот (и только один), который освобождает эту память.Этого можно достичь путем подсчета ссылок, ведения списка ссылок и т. Д.
Парадигма RAII для памяти в некотором смысле похожа на сборку мусора в испорченных языках, за исключением того, что она запускается по мере необходимости и диктуется вашимкод, а не через определенные промежутки времени, в значительной степени не зависит от вашего кода.