Я все еще новичок в ручном уничтожении в C ++ (пришло из языков с сборкой мусора).У меня есть следующее в одном из моих классов:
Input** Inputs;
, который инициализируется следующим образом:
this->Inputs = new Input* [totalInputs];
и может быть переназначенпозже в моем коде в зависимости от пользовательского ввода, похожего на это:
this->Inputs[inputNumber] = new DigitalInput(params...)
Проблема в том, что он открыт для утечек памяти при переназначении объекта в этом месте из-заосвобождение старого объекта.
Каков наилучший способ удаления старого объекта после его переназначения?
Редактировать: я забыл включить, что это на микроконтроллере AVR, работающем на базе кода Arduino.
Редактировать 2: Причина, по которой я делаю это, заключается в том, что пользовательразрешено отправлять команды устройству, которые будут изменять тип ввода (то есть: отправлять команду и this->Inputs[inputNumber] = new AnalogInput(params...)
. Кроме того, причина, по которой это указатель на массив указателей, заключается в том, что конструктор для этого объекта будет генерировать этот массив на основеtotalInputs
передан аргумент. Он находится в разделяемой библиотеке, которая используется в нескольких различных единицах.