内存泄露问题是程序员都比较恐惧的问题,今天在这里说一下Vector和Array的释放问题,因为本人研究的也很肤浅,如果有幸被大神看到,望多多指教。
话不多说,我们给出例子:
vector<int*> *pVec = new vector<int*>(); for (int i = 0; i < 10; ++i) { pVec->push_back(new int()); } for (vector<int*>::iterator iter = pVec->begin(); iter != pVec->end(); ++iter) { delete *iter;//释放元素 *iter = NULL; } delete pVec;//释放容器 pVec = NULL;
对于二维数组,我们先typedef A* Arr[4];
Arr *arr = new Arr[3]; for (int i = 0; i < 3; ++i) { for (int n = 0; n < 4;++n) { arr[i][n] = new A(); } } for (int i = 0; i < 3; ++i) { for (int n = 0; n < 4;++n) { //释放元素 delete arr[i][n]; } } delete [] arr;
这里vector是delete pVec,没有[],而二维数组是delete [] arr,这里有[]。