我仍然不熟悉 C++ 中的手动销毁(来自具有垃圾收集功能的语言)。我在我的一堂课中有以下内容:
Input** Inputs;
其初始化如下:
this->Inputs = new Input* [totalInputs];
并且可以根据用户输入在我的代码中稍后重新分配,类似于:
this->Inputs[inputNumber] = new DigitalInput(params...)
这样做的问题是,由于释放旧对象而在该位置重新分配对象时,可能会导致内存泄漏。
重新分配旧对象后,删除旧对象的最佳方法是什么?
编辑:我忘了说这是在 Arduino 代码库上运行的 AVR 微控制器上。
编辑 2:我这样做的原因是因为允许用户向将更改输入类型的单元发送命令(即:发送命令和this->Inputs[inputNumber] = new AnalogInput(params...)
。也是指向指针数组的指针的原因是因为此对象的构造函数将根据totalInputs
传入的参数生成该数组。这是在几个不同单元上使用的共享库中。
如果要重新分配数组成员以指向新对象,则可以先解除分配旧对象(如果有)。
Input* oldInput = this->Inputs[inputNumber];
delete oldInput;
this->Inputs[inputNumber] = new DigitalInput(params...)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句