如何从指向指针数组的指针中删除对象?

Phi*_*len 0 c++ pointers arduino destruction

我仍然不熟悉C ++中的手动销毁(来自具有垃圾回收功能的语言)。我的一门课有以下内容:

Input** Inputs;

初始化如下:

this->Inputs = new Input* [totalInputs];

并可以根据用户输入稍后在我的代码中重新分配,类似于:

this->Inputs[inputNumber] = new DigitalInput(params...)

问题在于,由于释放旧对象,在该位置重新分配对象时,它很容易发生内存泄漏。

重新分配旧对象后,删除旧对象的最佳方法是什么?

编辑:我忘了包括在Arduino代码库上运行的AVR微控制器上。

编辑2:之所以这样做,是因为允许用户将命令发送到将更改输入类型的单元(即:发送命令和this->Inputs[inputNumber] = new AnalogInput(params...)。这也是指向指针数组的指针)的原因。这是因为此对象的构造函数将根据totalInputs传入的参数生成该数组。这在一个共享库中使用,该共享库可在几个不同的单元上使用。

cpl*_*rat 5

最好不要使用原始指针,而是使用stl容器。一种可能的方式如下。

using InputPtr = std::unique_ptr<Input>;
std::vector<InputPtr> Inputs;
Inputs.emplace_back(std::make_unique<DigitalInput>());
Run Code Online (Sandbox Code Playgroud)

无需担心内存泄漏。您必须使用的另一个选项std::shared_ptr取决于您打算如何使用InputList。