【发布时间】:2010-02-10 11:37:04
【问题描述】:
这是this question 的扩展。我在网上搜索过,但找不到满意的答案。
我有一个class A,它定义了一个包含多个class Region 实例的向量。这些Region 实例的内存处理需要由Class A 管理
我的问题是:
1.在下面的sn-p代码中,是否需要在A类的析构函数中显式删除这些实例?
2. 我应该将实例创建为 new Region(i) 吗?是否比第一个选项更好(不使用new)A 类是一个相当大的对象。我应该如何确定是否使用新的?
3. 如果对#2 的回答是肯定的,我应该如何在析构函数中删除这些实例? delete Region(i)(在 for 循环中)或 delete [] reg??我猜以前的方法是正确的方法,但想确认一下。
4. 除了“Region instances are not deleted”之外,你有没有看到明显的内存泄漏……尤其是在A的构造函数中构造Region对象?
class Region{
public:
Region(int num);
int number;
std::vector <elemt*> elements;
int info;
}
class A{
public:
std::vector<Region> reg;
const int numOfRegions = 100;
}
A::A(){
int i;
for ( i=0; i<numOfRegions; i++){
reg.push_back(Region(i));
}
}
A::~A(){
// How should the elements within vector Region be deleted??
// Should I use "new" to allocate memory to instances of Region()
}
更新: 非常感谢所有回答的人!
【问题讨论】:
标签: c++