这是一个代码示例,希望能证明我的困惑
#define MAX_LENGTH 5
class Bar
{
private:
Foo *_myFooArray[MAX_LENGTH];
public:
Bar()
{
for (int i = 0; i < MAX_LENGTH; ++i)
{
_myFooArray[i] = new Foo(i);
}
}
};
因为我没有用 new 创建数组,所以我认为我不能使用 delete[] 但是如果我想删除动态分配的对象怎么办?遍历数组并一次删除一个?因此;
~Bar()
{
for (int i = 0; i < MAX_LENGTH; ++i)
{
delete _myFooArray[i];
}
}
我可能会听到你们中的一些人对我尖叫使用矢量!!我很感激。我只是想学习。仅出于完整性考虑,如果出于某种原因我不得不如上所述使用数组,那么除了正确删除数组之外,我还有什么需要特别注意的吗?
不使用智能指针时,C ++中的规则之一是“每个都new
需要一个delete
。”。
您必须使用问题中的析构函数来避免内存泄漏。数组本身没有分配 usingnew
所以你不需要delete
它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句