我还是C ++手动破坏的新手(来自垃圾收集的语言)。我的一个课程中有以下内容:
输入**输入;
其初始化如下:
这 - > …
如果要删除堆中的对象:
for(int i = 0; i < totalInputs; ++i) delete Inputs[i]; delete[] Inputs ;
for(int i = 0; i < totalInputs; ++i) delete Inputs[i]; delete[] Inputs
编辑: 如果您使用的是微控制器,最好在堆栈中进行分配。
在阵列上定义最大大小。喜欢:
const int MAX = 5; Inputs inputs[MAX][MAX];
然后只是将对象指向它。
最好不要使用原始指针并转到stl容器。一种可能的方式如下。
using InputPtr = std::unique_ptr<Input>; std::vector<InputPtr> Inputs; Inputs.emplace_back(std::make_unique<DigitalInput>());
无需担心内存泄漏。您拥有的另一个选择是使用 std::shared_ptr 取决于您打算如何使用您的InputList;
std::shared_ptr