C++ 析构函数与delete[]
2017-08-09 16:59
183 查看
delete 回收new为对象分配的内存;
析构函数不是删除对象,而是在删除前做一些清理工作,使该部分内存为新的对象使用。
最近碰到一个问题,使用clear()时直接使用:
调用如下:
此刻抛出中断,因为访问了一个不存在的内存,其后改为
之后正常,究其原因是clear只是使数组清空,而不是清除这块内存
析构函数不是删除对象,而是在删除前做一些清理工作,使该部分内存为新的对象使用。
最近碰到一个问题,使用clear()时直接使用:
void clear() { //..... delete[]element; //.... } get(int theIndex) const { checkIndex(theIndex);//检测Index是否合理,否则抛出异常 return element[theIndex]; }
调用如下:
x.clear(); try { x.get(0); } catch (illegalParameterValue e) { e.outputMessage(); }
此刻抛出中断,因为访问了一个不存在的内存,其后改为
void clear() { //..... for (int i = 0; i < listSize; i++) element[i].~T(); //.... }
之后正常,究其原因是clear只是使数组清空,而不是清除这块内存
相关文章推荐
- C++ vector的delete与clear的区别 - 析构函数
- 【日常】C++ 的那些“坑” —— delete 与 析构函数 与 virtual 的 9 个小例子
- c++ 析构函数中的delete对象的顺序
- C++ 构造函数与析构函数详解(二)---自由存储 new和delete
- C++中的析构函数和delete的关系
- (需要确认一点)C++ 析构函数和delete运算符
- C++ 析构函数以及 delete 和delete[]的整理
- C++第二节(2):复合类、析构函数、new、delete
- C++中new和delete的背后( call edx 调用虚表内的第二个函数(析构函数))
- 【c++】析构函数中delete this指针
- C++通过基类指针delete派生类数组,析构函数是虚函数,程序为什么会崩溃? https://www.zhihu.com/question/30838092/answer/49623765
- C++中的析构函数与delete
- C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针
- 为什么C++不能有虚构造函数,却可以有虚析构函数
- C++中将构造函数或析构函数定义为private
- 在c++中构造函数和析构函数的应用中出现的一些问题
- C++ 学习笔记(1) 虚函数和析构函数
- c++_6 : 构造函数和析构函数
- C/C++内存分配方式,栈区堆区 new/delete/malloc/free
- C++之CNoTrackObject类和new delete操作符的重载实例