如何在Vect类析构函数中正确释放pVect内存以实现资源复用?
析构函数内存释放实现
pVect为double*类型的动态数组指针,常规向量实现中都是通过new[]批量分配内存,对应使用delete[]释放即可,完整实现如下:
Vect::~Vect() /* PRE: None POST: free pVect */ { cout << "(__|| - DELETE (unlock the memory for): " << (*this) << endl; // 释放动态数组内存 delete[] pVect; // 置空指针避免野指针 pVect = nullptr; }
注意事项
- 若
pVect是通过单个new double分配的内存(该场景在向量实现中极少出现),可将delete[]替换为delete - 释放后置空指针为可选但推荐操作,可规避后续访问已释放内存导致的未定义行为
- C++标准允许
delete/delete[]操作空指针,无需额外做空指针判断,添加判断也不会影响运行逻辑
内容的提问来源于stack exchange,提问作者ElGenericoIsABigBoy
相关产品推荐
相关产品推荐

