【发布时间】:2011-11-24 19:04:54
【问题描述】:
关于从类中的公共成员函数返回指向向量或指针映射的指针的含义,我有一个简短的问题。
这是我的代码:
这是B类的成员函数
vector<A*>* ClassB::getfunction(){
returns m_test;
}
m_test 是 B 类的私有数据成员,类型为指向指针向量的指针。该对象将在堆上初始化,因此我需要在类析构函数中将其删除(包括向量中的所有元素)。
然后我会使用如下所示的函数。
B* ex_B = new B();
vector<A*>* ex_ptr_vecA = new vector<A*>;
ex_ptr_vecA = ex_B->getfunction();
我的问题:
由于我有两个内存都分配在堆上的对象,我需要同时删除它们吗?
顺序是否重要,以下是否正确?
B* ex_B = new B();
vector<A*>* ex_ptr_vecA = new vector<A*>;
ex_ptr_vecA = ex_B->getfunction();
//do something with ex_ptr_vecA
//Then I want to delete the allocate memory to the heap
//delete class B first
delete ex_B;
//and then the vector
//need to loop over vector elements and delete one at a time
for(int i =0; i < ex_ptr_vecA; i++){
delete ex_ptr_vecA->at(i);
}
delete ex_ptr_vecA;
这是正确的还是我试图删除悬空指针,因为 B 类的析构函数已经释放了堆内存?
【问题讨论】:
标签: c++